मेरे पास एक ही मुद्दा था और इसमें जोड़ा गया, मुझे यह जांचने की आवश्यकता है कि क्या आइफ्रेम क्रॉस-डोमेन नीति के बावजूद लोड किया गया है। मैं एक क्रोम एक्सटेंशन विकसित कर रहा था, जो एक वेबपेज पर कुछ स्क्रिप्ट को इंजेक्ट करता है और आईफ्रेम में मूल पृष्ठ से कुछ सामग्री प्रदर्शित करता है। मैंने दृष्टिकोण का अनुसरण करने की कोशिश की और यह मेरे लिए एकदम सही था।
पुनश्च: मेरे मामले में, मेरे पास iframe में सामग्री पर नियंत्रण है, लेकिन मूल साइट पर नहीं है। (Iframe को मेरे स्वयं के सर्वर पर होस्ट किया गया है)
पहले:
इसमें एक data-
विशेषता वाला एक iframe बनाएं जैसे (यह हिस्सा मेरे मामले में इंजेक्शन स्क्रिप्ट था)
<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');
}
}
}
यह सवाल का सटीक जवाब नहीं दे सकता है लेकिन यह वास्तव में इस सवाल का एक संभावित मामला है जिसे मैंने इस पद्धति से हल किया है।