2011-03-21 13 views
6

मुझे कोई संदेह नहीं है कि इन्हें शायद कहीं भी इंटरनेट पर दस्तावेज किया गया है और Google द्वारा अनुक्रमित किया गया है - लेकिन को अक्षम करने के बारे में चर्चाओं के लिंक के पृष्ठों और पृष्ठों के माध्यम से छेड़छाड़ करने के बाद मैंने सोचा कि मैं यह देखने के लिए कहूंगा कि कोई भी दे सकता है या नहीं केवल उनके उपयोग का पता लगाने के बारे में उपयोगी उत्तर।बैक बटन और नई विंडो का पता कैसे लगाएं?

बैक बटन को अक्षम करने पर better articles में वर्णित विधि केवल पृष्ठ संक्रमण बनाकर काम करती है - इसलिए पहचान के लिए अधिक उपयोग नहीं किया जाता है।

window.history.next की उपस्थिति बैक बटन का पता लगाने के लिए एक तंत्र प्रदान कर सकती है - लेकिन यह कितनी व्यापक रूप से समर्थित है? क्या इसे असामान्य विशेषाधिकारों की आवश्यकता है?

Jonathan's answer इस पोस्ट में आशाजनक लग रहा है - लेकिन पूर्व-मानता है कि मैं पहली लैंडिंग पर विंडो नाम सेट कर सकता हूं - मुझे लगता है कि मैं पहली हिट का पता लगाने के लिए कुकी की अनुपस्थिति का उपयोग कर सकता हूं। कोई अन्य विचार?

टीआईए

+2

जोनाथन के मेरी नज़र का वादा, लेकिन bobince द्वारा स्वीकार कर लिया जवाब सही एक है का जवाब: आप नहीं कर सकते। एकमात्र उचित तरीका है कि आप अपने एप्लिकेशन सर्वर-साइड का निर्माण करें ताकि उपयोगकर्ता वापस आने पर भी काम करे। यह मुश्किल नहीं है और अन्य "अप्रत्याशित" उपयोगकर्ता क्रियाओं जैसे कि पुनः लोड करना, दो बार फॉर्म सबमिट करना, अतिरिक्त विंडो खोलना आदि – RoToRa

+0

मैं चारों ओर खेल रहा हूं और इतिहास का उपयोग कर नई विंडो के अधिकांश उदाहरणों का पता लगा सकता हूं। एमएसआईई और फ़ायरफ़ॉक्स में लम्बाई । यानी जोनाथन का जवाब सबसे नई खिड़कियों के लिए मान्य है (वहां मेरी टिप्पणी देखें)। लेकिन बैक बटन के बारे में: फ़ायरफ़ॉक्स में history.next संरक्षित है। दुर्भाग्यवश वर्तमान कोडबेस को ठीक करना एक विकल्प नहीं है। – symcbean

उत्तर

0

मैं कुछ कोड एक समय पहले लिखा था। स्क्रिप्ट का पूरी तरह से परीक्षण नहीं किया गया था, लेकिन आप इसे वापस करने के लिए कुछ तकनीकों को खींचने में सक्षम होना चाहिए ताकि इसका बैक बटन पता चल सके।

http://pastebin.no/32fx

+0

धन्यवाद ईसाई - मैं इस पोस्ट में आया (http://stackoverflow.com/questions/136937/is-there-a-way-to-catch-the-back-button-event-in- जावास्क्रिप्ट/2348076 # 2348076) मेरे प्रश्न पूछने के बाद से एक समान दृष्टिकोण लेता है। यह निश्चित रूप से समस्या को हल करने की सही विधि की तरह दिखता है – symcbean

+0

यदि आप मेरी स्क्रिप्ट का उपयोग करते हैं, तो मैं देखना चाहता हूं कि आपने इसके साथ क्या किया है :) –

0

सत्रस्टोर/स्थानीय स्टोरेज का उपयोग करें।

if (!sessionStorage.hasBeenHereBefore) sessionStorage.hasBeenHereBefore = true; 
else { 
    // Code to run if they've been here before. 
} 

आप sessionStorage उपयोग करते हैं, तो अगर वे ब्राउज़र बंद करने और वापस आते हैं, यह पहली बार की तरह लग जाएगा, लेकिन अगर आप localStorage का उपयोग तो यह हमेशा के लिए बनी रहती है।

आप की तरह कुछ गुप्त घटनाओं की तलाश में की कोशिश कर सकते:

window.addEventListener('historyback', function() {}, false); 
window.addEventListener('navigateback', function() {}, false); 
window.addEventListener('returntopage', function() {}, false); 
+0

मुझे लगता है कि यह एक अलग सवाल का जवाब है - जिसे मैंने पूछा नहीं। जिस समस्या को मैं कम करने की कोशिश कर रहा हूं वह वह जगह है जहां राज्य एक सर्वरसाइड सत्र उपयोगकर्ता द्वारा चुने गए वर्तमान स्थान से मेल नहीं खाता है। – symcbean

+0

मुझे पता है, लेकिन वास्तव में यह उतना करीब है जितना आप अभी प्राप्त करने जा रहे हैं। आप खिड़की की घटनाओं का एक गुच्छा कोशिश कर सकते हैं। (उत्तर में उदाहरण) – Kayla

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