आपके प्रश्न का बिल्कुल जवाब नहीं देता है, लेकिन एक उत्तर के लिए मेरी खोज ने मुझे यहां लाया, इसलिए मैं किसी और के साथ एक समान प्रश्न पूछने पर बस पोस्ट कर रहा हूं।
यह लोड लोड का उपयोग नहीं करता है, लेकिन यह पता लगा सकता है कि कोई वेबसाइट सुलभ और कॉल करने योग्य है (यदि यह है, तो iFrame, सिद्धांत रूप में, लोड होना चाहिए)।
सबसे पहले, मैंने एजेक्स कॉल को हर किसी की तरह करने का विचार किया, सिवाय इसके कि यह मेरे लिए शुरू में काम नहीं करता था, क्योंकि मैंने jQuery का उपयोग किया था। यह पूरी तरह से काम करता है अगर आप एक XMLHttpRequest कार्य करें:
var url = http://url_to_test.com/
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status != 200) {
console.log("iframe failed to load");
}
};
xhttp.open("GET", url, true);
xhttp.send();
संपादित करें:
तो इस विधि ठीक काम करता है, को छोड़कर यह मिथ्या नकारात्मक का एक बहुत है कि (जो एक iframe में प्रदर्शित कर सामान का एक बहुत ऊपर उठाता) क्रॉस-उत्पत्ति मलेकी के कारण। जिस तरह से मैं इसे प्राप्त करता था वह सर्वर पर एक कर्ल/वेब अनुरोध करना था, और फिर वेबसाइट के मौजूद होने पर प्रतिक्रिया शीर्षलेखों की जांच करें) और बी) यदि शीर्षलेख x-frame-options
सेट करते हैं।
यदि आप अपना स्वयं का वेबसर्वर चलाते हैं तो यह कोई समस्या नहीं है, क्योंकि आप इसके लिए अपना एपीआई कॉल कर सकते हैं।
Node.js में मेरे कार्यान्वयन:
app.get('/iframetest',function(req,res){ //Call using /iframetest?url=url - needs to be stripped of http:// or https://
var url = req.query.url;
var request = require('https').request({host: url}, function(response){ //This does an https request - require('http') if you want to do a http request
var headers = response.headers;
if (typeof headers["x-frame-options"] != 'undefined') {
res.send(false); //Headers don't allow iframe
} else {
res.send(true); //Headers don't disallow iframe
}
});
request.on('error',function(e){
res.send(false); //website unavailable
});
request.end();
});
1) iframe पृष्ठ पर क्यों जोड़ने की परेशानी जावास्क्रिप्ट? मैं बस लोड घटना के साथ सेटटाइमआउट का उपयोग आसानी से कर सकता था। 2) यह विश्वसनीय रूप से पता नहीं लगाता है कि लोड विफल रहता है या क्यों, यह एक समय सीमा के भीतर सफल होता है या नहीं। 3) उस मामले का पता नहीं लगाता है जहां पृष्ठ निर्भरता लोड होने में असफल हो जाती है। –
विभिन्न संसाधन अलग-अलग समय फ्रेम में लोड होंगे। यह अप्रत्याशितता आपके दृष्टिकोण डैनियल कैसिडी को मार डालेगी, क्योंकि आपको एक उचित लंबे समय के लिए अनुमति देना होगा। इस बीच, अल्पकालिक लोड त्रुटियां तब तक स्क्रीन पर लटका दी जाएंगी जब तक कि टाइमर मानता है कि संसाधन लोड करने में विफल रहा है और त्रुटि को संभालता है। – seebiscuit