나는 동일한 문제가 있었고 이것에 추가하여 교차 도메인 정책에 관계없이 iframe이로드되었는지 확인해야했습니다. 웹 페이지에 특정 스크립트를 삽입하고 상위 페이지의 일부 콘텐츠를 iframe에 표시하는 크롬 확장 프로그램을 개발하고있었습니다. 나는 다음 접근 방식을 시도했고 이것은 나를 위해 완벽하게 작동했습니다.
추신 : 제 경우에는 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');
}
}
}
질문에 정확하게 대답하지 않을 수도 있지만 실제로이 방법으로 해결 한이 질문의 가능한 경우입니다.