2009-08-30 6 views
5

मुझे पता है कि कोई खिड़की के लिए ईवेंट श्रोता जोड़ सकता है। आतंक।सभी Iframes (window.error के साथ) में जावास्क्रिप्ट त्रुटियों को कैसे पकड़ें?

हालांकि अगर इफ्रेम के साथ काम करते हैं, तो प्रत्येक iframe का अपना विंडो तत्व होता है, और window.error प्रत्येक iframe के लिए बनाया जाना चाहिए।

क्या किसी भी स्थान पर त्रुटि ईवेंट हैंडलर को परिभाषित करना संभव है, जहां सभी त्रुटियां इस विशिष्ट विधि को ट्रिगर करेंगी?

उत्तर

5

यह काम हो सकता है।

function myHandler(msg, url, line){ 
    //do stuff here... 
} 

//hook in all frames... 
function addErrorHandler(win, handler){ 
    win.onerror = handler; 
    for(var i=0;i<win.frames.length;i++){ 
    addErrorHandler(win.frames[i], handler); 
    } 
} 
//start with this window... and add handler recursively 
addErrorHandler(window, myHandler); 
+0

इसके लिए धन्यवाद। अच्छा लग रहा है, हालांकि मेरे ऐप के लिए बिल्कुल सही नहीं लगता है - IFrames और windows फ्लाई पर बनाए गए हैं, बिना उनमें से अधिकतर नियंत्रण में सक्षम हैं, इसलिए मैं पहले से ही सभी जीत ऑब्जेक्ट्स को नहीं जानता। मुझे लगता है कि आईई विंडो में वैश्विक त्रुटि हैंडलिंग तरीका नहीं है? धन्यवाद, ताल। – Tal

+0

आह, उस स्थिति में ... आपके द्वारा बनाए गए प्रत्येक फ्रेम में, बस जोड़ें ... window.onerror = top.myHandler; – scunliffe

+0

हाँ ... लेकिन मुझे पहले से पता नहीं है कि इफ्रेम का स्रोत क्या होगा। (फॉर्म का उपयोग करके लक्ष्य IFrame को सबमिट करें) - window.onerror IFrame कोड के अंदर होना चाहिए .. – Tal

2

मैंने यह कोशिश नहीं की है इसलिए कृपया मुझे इसके लिए लटकाएं :-) मास्टर/पैरेंट विंडो में सभी iframes रखने वाले, आप वहां अपना त्रुटि सौंपने का कार्य बना सकते हैं। फिर अपने पृष्ठ में अपने सभी आईफ्रेम को पकड़ने के लिए jQuery का उपयोग करें और पैरेंट विंडो में पंजीकृत अपने फ़ंक्शन को इंगित करने के लिए .error हैंडलर पंजीकृत करें।

पुनश्च: इसके अलावा, जबकि जावास्क्रिप्ट त्रुटि हैंडलिंग के विषय पर थे, यह भी बहुत अच्छा है: https://damnit.jupiterit.com/

संबंधित मुद्दे