Tôi đã gặp vấn đề tương tự và đã thêm vào vấn đề này, tôi cần kiểm tra xem iframe có được tải không bất kể chính sách tên miền chéo. Tôi đang phát triển một tiện ích mở rộng chrome đưa một tập lệnh nhất định vào một trang web và hiển thị một số nội dung từ trang chính trong iframe. Tôi đã thử làm theo cách tiếp cận và điều này hoàn toàn phù hợp với tôi.
Tái bút: Trong trường hợp của tôi, tôi có quyền kiểm soát nội dung trong iframe nhưng không có trên trang web mẹ. (Iframe được lưu trữ trên máy chủ của riêng tôi)
Đầu tiên:
Tạo iframe với data-
thuộc tính trong đó như (phần này nằm trong tập lệnh được chèn trong trường hợp của tôi)
<iframe id="myiframe" src="http://anyurl.com" data-isloaded="0"></iframe>
Bây giờ trong mã iframe, hãy sử dụng:
var sourceURL = document.referrer;
window.parent.postMessage('1',sourceURL);
Bây giờ quay lại tập lệnh được chèn theo trường hợp của tôi:
setTimeout(function(){
var myIframe = document.getElementById('myiframe');
var isLoaded = myIframe.prop('data-isloaded');
if(isLoaded != '1')
{
console.log('iframe failed to load');
} else {
console.log('iframe loaded');
}
},3000);
và,
window.addEventListener("message", receiveMessage, false);
function receiveMessage(event)
{
if(event.origin !== 'https://someWebsite.com')
{
console.log('URL issues');
return;
}
else {
var myMsg = event.data;
if(myMsg == '1'){
$("#myiframe").prop('data-isloaded', '1');
}
}
}
Nó có thể không trả lời chính xác câu hỏi nhưng nó thực sự là một trường hợp có thể xảy ra với câu hỏi này mà tôi đã giải quyết bằng phương pháp này.