У меня была такая же проблема, и я добавил к этому, мне нужно было проверить, загружается ли 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')
{
console.log('URL issues');
return;
}
else {
var myMsg = event.data;
if(myMsg == '1'){
$("#myiframe").prop('data-isloaded', '1');
}
}
}
Возможно, это не совсем ответ на вопрос, но это действительно возможный случай этого вопроса, который я решил этим методом.