2011-06-08 20 views
16

मेरे पास उस पृष्ठ से जुड़ा एक ऑनबॉर्नलोड ईवेंट हैंडलर है जो पृष्ठ को फिर से लोड/रीडायरेक्ट होने पर निष्पादित करता है।onbeforeunload इवेंट हैंडलर रद्द करें?

window.onbeforeunload = function() { 
    console.log("do something");} 

मैं नहीं चाहता कि यह स्क्रिप्ट मेरे परीक्षणों के दौरान चलें। मैं इसे अपने स्वयं के परीक्षण वातावरण में अक्षम करना चाहता हूं।

क्या इस ऑनबर्नलोड लोड ईवेंट को अनइंड करने का कोई तरीका है? मैं jQuery के साथ फ्रेमवर्क के रूप में जावास्क्रिप्ट का उपयोग कर रहा हूं, इसलिए jQuery में एक जवाब अच्छा होगा।

उत्तर

28

जावास्क्रिप्ट कार्यों में ओवरराइट किया जा सकता है। आप बस यह एक नया उद्देश्य असाइन कर सकते हैं:

window.onbeforeunload = function() { 
    // blank function do nothing 
} 

यह पूरी तरह से window.onbeforeunload के मौजूदा संस्करण के ऊपर लिख देगा।

नोट: आप इस कोड को पहले स्थान पर सेट करने वाले कोड की रेखा को क्यों नहीं हटाते? या यदि आप नहीं कर सकते हैं, तो इसे परिभाषित करने के बाद आपको यह खाली फ़ंक्शन सेट करना होगा, बस यह सुनिश्चित करने के लिए कि इसे फिर से ओवरराइड नहीं किया गया है

+1

यह हमारे AJAX फ़ंक्शंस के अंदर पूरी तरह से काम करता है जो इस समस्या को दबाता है। +1 – Ligemer

+11

या 'window.onbeforeunload = null;' –

0

इस प्रश्न से तुरंत संबंधित नहीं है (कृपया उस वजह से नीचे मत डालें), लेकिन किसी को फिर भी मदद मिल सकती है, यह क्या मैं कोणीय 1.x और टाइपप्रति में उपयोग करते हैं:

this.$window.onbeforeunload =() => null; 
+0

और ... किसी ने इसे कम किया। लॉल – Simon

+0

शायद क्योंकि इसमें कुछ ऐसा करने के लिए कोणीय और टाइपस्क्रिप्ट की आवश्यकता होती है जो बिना कोड के एक पंक्ति में किया जा सकता है। – Ibu

+0

शायद, लेकिन मैंने स्पष्ट रूप से कहा कि थोड़ा असंबद्ध होने पर, जो कोई कोणीय का उपयोग कर सकता है, उसमें इसका उपयोग हो सकता है। इस कोड में टाइपस्क्रिप्ट अप्रासंगिक है - यह सिर्फ मेरे सेटअप का हिस्सा बन गया है। मैं समझ नहीं पा रहा हूं लेकिन वोटिंग थोड़ा सा छोटा है। फिर फिर, शायद मैं यहाँ एक मोड़ में मेरी jimmies मिल रहा है। – Simon

0

jQuery ≥ 1.7

jQuery 1.7 घटना एपीआई आगे के साथ अद्यतन किया गया है, .bind()/.unbind() अभी भी पीछे की संगतता के लिए उपलब्ध हैं, लेकिन पसंदीदा विधि ऑन()/ऑफ() फ़ंक्शंस का उपयोग कर रही है। नीचे अब

$('#myimage').click(function() { return false; }); // Adds another click event 
$('#myimage').off('click'); 
$('#myimage').on('click.mynamespace', function() { /* Do stuff */ }); 
$('#myimage').off('click.mynamespace'); 
संबंधित मुद्दे