У меня была такая же проблема и я добавил ее, мне нужно было проверить, загружен ли iframe независимо от междоменной политики.Я разрабатывал расширение Chrome, которое внедряет определенный сценарий в веб-страницу и отображает некоторый контент с родительской страницы в iframe.Я попробовал следующий подход, и это сработало идеально для меня.
PS: В моем случае у меня есть контроль над содержимым в iframe, но не на родительском сайте.(Iframe размещается на моем собственном сервере)
Первое:
Создайте iframe с атрибутом data-
в нем (эта часть была в сценарии с внедрением в моем случае)
<iframe id="myiframe" src="http://anyurl.com" data-isloaded="0"></iframe>
Теперь в коде iframe используйте:
var sourceURL = document.referrer;
window.parent.postMessage('1',sourceURL);
Теперь вернемся к внедренному сценарию в моем случае:
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);
и,
window.addEventListener("message", receiveMessage, false);
function receiveMessage(event)
{
if(event.origin !== 'https://someWebsite.com') //check origin of message for security reasons
{
console.log('URL issues');
return;
}
else {
var myMsg = event.data;
if(myMsg == '1'){
//8-12-18 changed from 'data-isload' to 'data-isloaded
$("#myiframe").prop('data-isloaded', '1');
}
}
}
Это может не совсем точно ответить на вопрос, но это действительно возможный случай этого вопросакоторый я решил этим методом.