2010-09-13 22 views
18

मेरे पास है जो अन्य साइट्स को शामिल कर सकते हैं ताकि उनके उपयोगकर्ता POST मेरी साइट पर वापस आ सकें। मैं उन मामलों को गहराई से संभालना चाहता हूं जहां मेरी साइट डाउन है या मेरा सर्वर सामग्री (यानी, एक प्रतिक्रिया टाइमआउट या 4xx या 5xx त्रुटि) की सेवा नहीं कर सकता है। मैं वस्तु के लिए एक onError जोड़ने की कोशिश की, लेकिन वह कुछ भी करने को नहीं मालूम था: अपने सर्वर एक 404 मैं बस अपना में नहीं पाया पृष्ठ की सामग्री प्राप्त रिटर्नआईफ्रेम लोड करने में त्रुटियों को कैसे संभाल सकता हूं?

showIFrame = function() { 
    var iframe = document.createElement('iframe'); 
    iframe.id = 'myIFrame'; 
    iframe.src = 'http://myserver.com/someURLThatFailsToLoad'; 
    iframe.onError = iframe.onerror = myHandler; 
    document.body.appendChild(iframe); 
}; 

myHandler = function(error) { 
    document.getElementById('myIFrame').style.display = 'none'; 
    console.error('Error loading iframe contents: ' + error); 
    return true; 
}; 

हैं। वास्तव में, वह त्रुटि हैंडलर कभी ट्रिगर नहीं होता है। क्या यह काम करने का कोई तरीका है?

(मैं वर्तमान में क्रोम में परीक्षण कर रहा हूँ, लेकिन मैं यह भी एफएफ के लिए काम करना चाहते हैं और IE> = 7)

उत्तर

12

कि क्या आपके सर्वर डाउन है या नहीं का पता लगाने के लिए, आप एक खाली शामिल कर सकते हैं अपने डोमेन से स्क्रिप्ट फ़ाइल। जब सर्वर डाउन है, onerror ईवेंट हैंडलर होगा आग:

var el = document.createElement('script'); 
el.onerror = errorFunction; 
el.src = "somebogusscript.js?" + new Date().getTime(); 
document.body.appendChild(el); 

नोट: (जो पर एक नज़र रोक सकता है src विशेषता के लिए एक यादृच्छिक स्ट्रिंग को जोड़ने के लिए एक कैश्ड संस्करण का उपयोग कर ग्राहक से बचने के लिए मत भूलना सर्वर बिल्कुल)।

+1

क्षमा करें - महान बिंदु, हालांकि मैंने पहले से ही इसके लिए जिम्मेदार ठहराया था। अद्यतन देखें: 'iframe.onError = iframe.onerror = myHandler;' –

+0

अधिकांश ब्राउज़र XHR अनुरोध क्रॉस-डोमेन की अनुमति नहीं देते हैं। यह जावास्क्रिप्ट है जो मैं अन्य साइटों को प्रदान करता हूं। दरअसल, एक्सएचआर HTTP के क्रॉस-डोमेन प्रतिबंध ठीक हैं, मैं यहां पर '