2009-04-10 12 views
5

मैं एक ईवेंट हैंडलर चाहता हूं जो उपयोगकर्ता को पुनः लोड होने पर आग लगती है। क्या जोड़ने के लिए सही हैंडलर ऑनफ्रेश या ऑनलोड करें? इसके अलावा, क्या यह ऑनलोड के पहले या बाद में भी आग लग जाएगा? क्या कोई ब्राउज़र असंगतता है? धन्यवाद।जावास्क्रिप्ट: ऑनफ्रेश या ऑनलोड?

उत्तर

5

मुझे नहीं लगता कि ऑनफ्रेश या ऑनलोड नामक ईवेंट हैं। आप जान सकते हैं कि पृष्ठ अनलोडिंग कब होता है, लेकिन यह जानकर कि क्यों (यानी जहां उपयोगकर्ता आगे जा रहा है) जावास्क्रिप्ट के सुरक्षा सैंडबॉक्स के बाहर है। यह जानने का एकमात्र तरीका है कि पृष्ठ को फिर से लोड किया गया है यह जानना है कि उपयोगकर्ता अंतिम पृष्ठ अनुरोध पर कहां था, जो जावास्क्रिप्ट के दायरे से बाहर है। आप कभी-कभी document.referrer के माध्यम से प्राप्त कर सकते हैं, लेकिन यह उस जानकारी तक पहुंच की अनुमति देने के लिए ब्राउज़र की सुरक्षा सेटिंग्स पर निर्भर करता है।

+0

जहाँ तक मैं बता सकते हैं: आईई 8 सफारी 4 काम करता है एफएफ 3 क्रोम 2 काम नहीं करता है सब Win7 – Thomaschaaf

0

कोई ऑनलोड या ऑनफ्रेश ईवेंट नहीं है जिसे मैं जानता हूं। निश्चित रूप से ब्राउज़र में चल रहे जावास्क्रिप्ट से यह थोड़ा समझ में आता है। मौजूदा विंडो और इसकी सभी सामग्री प्रभावी ढंग से त्याग दी जाती है। इसलिए आपको या तो मौजूदा संदर्भ के अधिभार या पुनः लोड के परिणामस्वरूप बनाए गए नए संदर्भ की लोड घटना का उपयोग करने की आवश्यकता है।

2

यदि आप ऑनलोड ईवेंट की जांच के साथ विशिष्ट पृष्ठ के लिए एक कुकी सेट करना जोड़ते हैं, तो आप जो भी खोजना चाहते हैं उसे अनुकरण कर सकते हैं। आप कुकी की समाप्ति को समायोजित कर सकते हैं ताकि एक रीलोड केवल तभी गिना जा सके जब प्रारंभिक अधिभार एक निश्चित समय अंतराल था।

0

मुझे विश्वास है कि artlung वास्तव में एक रास्ता मिल सकता है, असल में ... उसका संस्करण, कुकीज़ पर निर्भर करता है, और उनको कई तरीकों से उपयोग से काट दिया जा सकता है; समाधान, तब, पृष्ठ के unload एडोब के माध्यम से एड्रेस के माध्यम से टाइमस्टैम्प को बचाने के लिए अपनी पसंद की सर्वर-साइड भाषा का उपयोग करना है (अभी भी एक भेद्यता, हाँ, लेकिन क्यों एक और विचार फेंक नहीं है, हुह?) और फिर प्रत्येक पृष्ठ लोड पर फिर से परीक्षण; यदि आप कुछ सेकंड से कम अंतर का पता लगाते हैं, तो उपयोगकर्ता शायद आपके पृष्ठ को पुनः लोड कर देगा। :)

0

एक सत्र का उपयोग कर सकता है। एक कुकी से आसान और समाप्ति या डेटाबेस के बारे में चिंता करने की ज़रूरत नहीं है। यह आपको पहले किसी को छोड़कर किसी भी पेज के लिए कवर करेगा। मुझे नहीं लगता कि सत्र superglobal दूसरे पृष्ठ के लिए उपलब्ध है। यदि यह कोई समस्या है, तो आप कोई सत्र शुरू कर सकते हैं और कोई सक्रिय सत्र नहीं होने पर तुरंत पृष्ठ को पुनः लोड कर सकते हैं।

0

WindowEventHandlers.onbeforeunload ईवेंट हैंडलर संपत्ति में पहले से लोड होने पर कोड निष्पादित किया गया कोड होता है। यह घटना तब होती है जब एक विंडो अपने संसाधनों को उतारने वाली है।

window.onbeforeunload = function() { 
    return 'Are you sure you want to leave?'; 
} 

यह आपके फ़ंक्शन में आपके द्वारा लौटाए गए संदेश के साथ उपयोगकर्ता को एक पुष्टिकरण संवाद दिखाएगा। यह उपयोगकर्ता को इस पृष्ठ को छोड़ देगा या विकल्प रद्द कर देगा।

पुष्टि के आसपास कोई रास्ता नहीं है क्योंकि इसका उपयोग दुर्भावनापूर्ण कारणों से किया जा सकता है।

https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload

+0

पर परीक्षण कोड में सुधार होगा के बारे में एक छोटी सी व्याख्या अपने जवाब काफी हद तक। –

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