2012-03-08 8 views
18

जाहिर है, window.onbeforeunload को क्रोम के साथ समस्याओं का उचित हिस्सा सामना करना पड़ा है जैसा कि मैंने सामना की सभी समस्याओं से देखा है। चारों ओर सबसे हालिया काम क्या है? अगर मैं चेतावनी की तरह कुछ के साथ स्थानापन्न वापसी "चेतावनी" ("blah"), मैं क्रोम से कुछ भी नहीं मिलता है,window.onbeforeunload: सबसे हालिया फिक्स क्या है?

window.onbeforeunload = function() { return "alert" }; 

हालांकि:

केवल एक चीज मैं भी काम कर के करीब मिल गया है this है।

मैंने this question में देखा कि Google उद्देश्य से इसे अवरोधित करता है। उनके लिए अच्छा ... लेकिन अगर कोई खिड़की बंद कर देता है तो मैं एजेक्स कॉल करना चाहता हूं? मेरे मामले में, मैं जानना चाहता हूं कि किसी ने मेरी वेबसाइट पर चैट रूम छोड़ा है, जो विंडो बंद होने से संकेतित है। कि निर्धारित करने की किसी अन्य तरह से मिलता है: window.onbeforeunload कॉल ताकि मैं वहाँ में AJAX डाल
या
(ख) कर सकते हैं ठीक:

मैं वहाँ एक रास्ता करने के लिए या तो
(क) अगर जानना चाहते हैं एक खिड़की क्रोम में बंद कर दिया है

+0

देखें है भी http://stackoverflow.com/questions/7389554/crossbrowser-onbeforeunload – powtac

उत्तर

13

उत्तर:

$(window).on('beforeunload', function() { 
    var x =logout(); 
    return x; 
}); 
function logout(){ 
     jQuery.ajax({ 
     }); 
     return 1+3; 
} 

एक छोटी सी मिश्रण और मैच है, लेकिन यह मेरे लिए काम किया। 1 + 3 सुनिश्चित करता है कि लॉगआउट फ़ंक्शन को कॉल किया जा रहा है (यदि आप छोड़ने का प्रयास करते हैं तो पॉपअप पर सफल होने पर आप 4 देखेंगे)।

+1

मेरे लिए क्रोम में यह _DOES_ काम करते हैं। धन्यवाद!!! – jahroy

+1

यह क्रोम में काम नहीं करता है और यह एक चेतावनी भी पॉप अप करेगा। क्या क्रोम में अलर्ट को अनदेखा करने का कोई तरीका है? – angelokh

+0

क्या चेतावनी? यह बिना किसी चेतावनी के मेरे लिए काम किया – varatis

3

यहां एक और अधिक सरल दृष्टिकोण है।

$(window).on('beforeunload', function() { 
    return "You should keep this page open."; 
}); 

लौटे संदेश कुछ भी आप चाहते हैं, रिक्त स्ट्रिंग सहित यदि आप संदेश है कि क्रोम पहले से ही पता चलता है में जोड़ने के लिए कुछ भी नहीं है हो सकता है। परिणाम इस प्रकार है:

enter image description here

+5

मैंने एक ही चीज़ की कोशिश की और यह काम नहीं करता है।अलर्ट सही तरीके से दिखाता है लेकिन मेरे कस्टम संदेश के बिना। – c4k

+2

@ c4k मुझे लगता है कि नवीनतम क्रोम अपडेट में कुछ तोड़ दिया। मेरे मामले में, लौटाया गया कस्टम संदेश एक हफ्ते पहले काम कर रहा था लेकिन क्रोम पैच स्थापित होने के बाद यह अब नहीं करता है। – Chronozoa

+4

@Chronozoa, आप सही हैं: https://www.chromestatus.com/feature/5349061406228480 – Bobort

2
MDN के अनुसार

,

समारोह घटना वस्तु की returnValue संपत्ति के लिए एक स्ट्रिंग मान असाइन और एक ही स्ट्रिंग लौटना चाहिए।

यह निम्न

window.addEventListener('beforeunload', function(ev) { 
    return ev.returnValue = 'My reason'; 
}) 
+0

यह सही विचार की तरह है, लेकिन आप श्रोता के लिए 'beforeunload' घटना को जोड़ने के लिए भूल गया था। – zenw0lf

+0

धन्यवाद, मैं यह – kisp

+0

धन्यवाद बहुत बहुत अद्यतन! यह क्रोम 63 पर काम किया; 'रिटर्न वैल्यू' असाइन किए बिना स्ट्रिंग को वापस करना पर्याप्त नहीं था। – cxw

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