यह कैसे जांचें कि उपयोगकर्ता ब्राउज़र इतिहास में वापस जा सकता है या नहीं


151

मैं यह देखने के लिए जावास्क्रिप्ट का उपयोग करना चाहता हूं कि क्या इतिहास है या नहीं, मेरा मतलब है कि बैक बटन ब्राउज़र पर उपलब्ध है या नहीं।


जवाबों:


119

संक्षिप्त उत्तर: आप नहीं कर सकते।

तकनीकी रूप से एक सटीक तरीका है, जो संपत्ति की जाँच करेगा:

history.previous

हालांकि, यह काम नहीं करेगा। इसके साथ समस्या यह है कि ज्यादातर ब्राउज़रों में इसे सुरक्षा उल्लंघन माना जाता है और आमतौर पर यह अपरिभाषित होता है

history.length

एक संपत्ति है जो दूसरों ने सुझाव दिया है ...
हालांकि , लंबाई पूरी तरह से काम नहीं करती है क्योंकि यह इंगित नहीं करता है कि आपके इतिहास में कहां है। इसके अतिरिक्त, यह हमेशा एक ही नंबर पर शुरू नहीं होता है। उदाहरण के लिए, एक लैंडिंग पृष्ठ के लिए सेट नहीं किया गया ब्राउज़र, 0 से शुरू होता है, जबकि दूसरा ब्राउज़र जो लैंडिंग पृष्ठ का उपयोग करता है, वह 1 से शुरू होगा।

वैकल्पिक शब्द

ज्यादातर समय एक लिंक जोड़ा जाता है जो कॉल करता है:

history.back();

या

 history.go(-1);

और यह उम्मीद की जाती है कि यदि आप वापस नहीं जा सकते हैं तो लिंक पर क्लिक करने से कुछ नहीं होता है।


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

5
मैं जो कह रहा हूं, वह निश्चित उत्तर नहीं है। आप प्रत्येक दृष्टिकोण के पेशेवरों और विपक्षों के बारे में कह रहे हैं, लेकिन यह नहीं है कि एक स्क्रिप्ट कैसे प्राप्त की जाए जो यह जांचती है कि आप किस ब्राउज़र का उपयोग कर रहे हैं और एक या दूसरे कोड के टुकड़ों को निष्पादित करते हैं।
सैंटियागो बेंडाविड

क्या मैं जानता हूं कि आपके लिए इसका क्या मतलब है? इसके साथ समस्या यह है कि अधिकांश ब्राउज़रों में इसे सुरक्षा उल्लंघन माना जाता है 'दूसरे धागे में एक अन्य उपयोगकर्ता ने यह भी कहा कि क्लाइंट के ब्राउज़र इतिहास को प्राप्त करने में सक्षम होना सुरक्षा का उल्लंघन है, लेकिन समझा नहीं करता है ऐसा क्यों है। क्या कोई उदाहरण दे सकता है कि सुरक्षा खतरे क्या हैं?
केविन चंद्र

एक वेबसाइट को उपयोगकर्ता के इतिहास को जानने में सक्षम नहीं होना चाहिए जिसमें अप्रत्यक्ष व्यक्तिगत जानकारी शामिल हो सकती है। उपयोगकर्ता साइट पर क्या कर रहा है, यह जानने के लिए एक साइट ट्रैकिंग / कुकीज़ का उपयोग कर सकती है, लेकिन उदाहरण के लिए, मुझे यह पता लगाने की अनुमति नहीं दी जानी चाहिए कि मैं किस बैंक का उपयोग करता हूं, मेरे बच्चे किस स्कूल में जाते हैं, आदि ... इसलिए। ब्राउज़र्स उस संपत्ति तक पहुंचने की अनुमति नहीं देंगे
मैकडॉन

84

जाँच करने का एक और तरीका है - रेफरल की जाँच करें। पहले पृष्ठ में आमतौर पर एक खाली रेफ़र होगा ...

if (document.referrer == "") {
    window.close()
} else {
    history.back()
}

2
गोपनीयता कारणों से रेफरर को छिपाया जा सकता है।
कोर्नेल

11
जब पृष्ठ किसी लिंक द्वारा लोड नहीं किया गया था, लेकिन URL को एड्रेस बार में दर्ज करके या बुकमार्क लोड करके हमेशा संदर्भित होता है। ऐसे पृष्ठ निश्चित रूप से एक इतिहास हो सकते हैं, हालांकि जब ब्राउज़र टैब / विंडो ने पहले एक और पृष्ठ लोड किया था!
9

1
लेकिन बहु-वेबसाइट पर नेविगेशन के लिए लागू समाधान है
डैन

36
काम नहीं करता है अगर एक खिड़की को लक्ष्य के साथ खोला गया था = "_ रिक्त" एक नई खिड़की को मजबूर करने के लिए। ब्राउज़र पर बैक बटन काम नहीं करेगा, लेकिन एक डॉक्यूमेंट होगा।
क्रेफ़रर

3
यदि आप सुरक्षित (HTTPS) पेज से असुरक्षित पृष्ठ (HTTP) पर आ रहे हैं तो यह काम नहीं करेगा, क्योंकि यह रेफ़रर को स्ट्रिप करेगा।
केविन बॉर्डर्स

54

मेरे कोड ने ब्राउज़र को एक पृष्ठ वापस जाने दिया, और यदि वह विफल हो जाता है तो यह एक फॉलबैक url लोड करता है। यह हैशटैग परिवर्तनों का भी पता लगाता है।

जब बैक बटन उपलब्ध नहीं था, तो फॉलबैक यूआरएल 500 एमएस के बाद लोड किया जाएगा, इसलिए ब्राउज़र के पास पिछले पृष्ठ को लोड करने के लिए पर्याप्त समय है। फ़र्कबैक url को सही से लोड करने के बाद window.history.go(-1);ब्राउज़र को फ़ॉलबैक url का उपयोग करने का कारण होगा, क्योंकि js स्क्रिप्ट अभी तक बंद नहीं हुई थी।

function historyBackWFallback(fallbackUrl) {
    fallbackUrl = fallbackUrl || '/';
    var prevPage = window.location.href;

    window.history.go(-1);

    setTimeout(function(){ 
        if (window.location.href == prevPage) {
            window.location.href = fallbackUrl; 
        }
    }, 500);
}

6
मुझे लगता है कि यह वास्तव में सवाल का दिल नाखून करता है, क्यों एक व्यक्ति परवाह करता है और वास्तव में इसके बारे में विश्वसनीय तरीके से और सुसंगत रूप से क्या किया जा सकता है।
क्रिस मैरिसिक

1
यह तब तक काम करता था जब तक कि मैं url नहीं लेता, जहां बैक-बटन रहता है और क्रोम में एक नए टैब में इसे चिपकाया जाता है। बैक-बटन पर क्लिक करने से परिणाम एक खाली टैब पर भेजा गया। :(
कार्लिंगन

2
यह Chrome का डिफ़ॉल्ट व्यवहार है। आप पृष्ठ पर "गए" chrome://newtabऔर इस प्रकार आप इतिहास में वापस जा सकते हैं।
redelschaap

इसके साथ सावधानी बरतें क्योंकि एक धीमे नेटवर्क कनेक्शन के साथ आप नियमित रूप से फॉलबैक यूआरएल को हिट करेंगे।
cameck

14

यहाँ देखें कि मैंने यह कैसे किया।

मैंने बूलियन सेट करने के लिए 'पहले से लोड' घटना का उपयोग किया । फिर मैंने यह देखने के लिए एक समय निर्धारित किया कि क्या 'पहले से लोड' को निकाल दिया गया है।

var $window = $(window),
    $trigger = $('.select_your_link'),
    fallback = 'your_fallback_url';
    hasHistory = false;

$window.on('beforeunload', function(){
    hasHistory = true;
});

$trigger.on('click', function(){

    window.history.go(-1);

    setTimeout(function(){
        if (!hasHistory){
            window.location.href = fallback;
        }
    }, 200);

    return false;
});

प्रमुख ब्राउज़रों में काम करने लगता है (परीक्षण FF, क्रोम, IE11 अब तक)।


1
यह सवाल का सबसे अच्छा जवाब है। आप आसानी से बदल सकते हैं window.location.href = fallbackके साथ window.close()है और यह भी काम करता है।
विटानी

13

एक स्निपेट है जिसका उपयोग मैं अपनी परियोजनाओं में करता हूं:

function back(url) {
    if (history.length > 2) {
        // if history is not empty, go back:
        window.History.back();
    } else if (url) {
        // go to specified fallback url:
        window.History.replaceState(null, null, url);
    } else {
        // go home:
        window.History.replaceState(null, null, '/');
    }
}

FYI करें: ब्राउज़र इतिहास का प्रबंधन करने के लिए मैं History.js का उपयोग करता हूं ।


इतिहास की तुलना क्यों करें। संख्या 2 की गति?

क्योंकि क्रोम का प्रारंभ पृष्ठ ब्राउज़र के इतिहास में पहले आइटम के रूप में गिना जाता है।


history.lengthउपयोगकर्ता के व्यवहार की कुछ संभावनाएँ हैं:

  • उपयोगकर्ता ब्राउज़र में नया खाली टैब खोलता है और फिर एक पेज चलाता है। history.length = 2और हम back()इस मामले में अक्षम करना चाहते हैं , क्योंकि उपयोगकर्ता खाली टैब पर जाएगा।
  • उपयोगकर्ता पहले किसी लिंक पर क्लिक करके नए टैब में पेज खोलता है । history.length = 1और फिर से हम back()विधि को निष्क्रिय करना चाहते हैं ।
  • और अंत में, कुछ पृष्ठों को पुनः लोड करने के बाद वर्तमान पृष्ठ पर उपयोगकर्ता भूमिhistory.length > 2और अब back()सक्षम किया जा सकता है।

नोट: जब उपयोगकर्ता बाहरी वेबसाइट से लिंक पर क्लिक किए बिना चालू पृष्ठ पर उतरता है तो मैं मामला छोड़ देता हूं target="_blank"

नोट 2: document.referrer खाली है जब आप अपना पता टाइप करके वेबसाइट खोलते हैं और यह भी कि जब वेबसाइट सबजेज को लोड करने के लिए ajax का उपयोग करती है, तो मैंने पहले मामले में इस मान की जांच बंद कर दी।


इस दृष्टिकोण ने मेरे लिए बहुत काम किया। मैं वास्तव में अपने पृष्ठों के लिए स्थैतिक फ़ॉलबैक बैक लिंक संग्रहीत करता हूं जिनका उपयोग मैं फ़ॉलबैक में करता हूं।
ग्रेग ब्लास

लेकिन, अगर आप वापस जाते हैं, तो history.length नहीं बदलेगी। इसलिए, यह ठीक से काम नहीं करता है
सिप्रियन मोकानु

आप सही हैं, दुर्भाग्य से। मैं इस स्निपेट का उपयोग केवल "वन-स्टेप-बैक" संरचना के साथ करता
हूं

12

यह चाल करने के लिए लगता है:

function goBackOrClose() {  

    window.history.back();
    window.close(); 

    //or if you are not interested in closing the window, do something else here
    //e.g. 
    theBrowserCantGoBack();

}

कॉल history.back () और फिर window.close ()। यदि ब्राउज़र इतिहास में वापस जाने में सक्षम है, तो वह अगले कथन तक नहीं पहुंच पाएगा। यदि यह वापस जाने में सक्षम नहीं है, तो यह विंडो बंद कर देगा।

हालाँकि, कृपया ध्यान दें कि यदि पृष्ठ url लिखकर पहुँच गया है, तो फ़ायरफ़ॉक्स अभ्यस्त स्क्रिप्ट को विंडो को बंद करने की अनुमति देता है।


3
मैंने पाया है कि यह तब तक काम नहीं करता है जब तक कि मैं अगले बयान को चलाने की कोशिश करने से पहले कुछ सौ मिलीसेकंड की देरी के साथ एक सेटटाइमआउट का उपयोग नहीं करता हूं, अन्यथा यह हिस्ट्री चलाने के बाद किसी भी तरह से चलेगा। ()
केन फेहलिंग

मैंने अनुभव नहीं किया है कि यह व्यक्तिगत रूप से कौन सा ब्राउज़र था?
xtrahelp.com

मैंने नीचे जवाब में सेटटाइमआउट फ़ंक्शन के साथ ठीक काम किया था। ex: setTimeout (फ़ंक्शन () {window.close ()}, 400);
गिलक्रिस

2
window.close()कई आधुनिक ब्राउज़रों द्वारा एक सुरक्षा जोखिम माना जाता है। कुछ अभ्यस्त तुम यह करते हैं।
रूडी केरशव

आप window.history.back () के बाद कुछ भी कर सकते हैं; window.close (); सिर्फ एक उदाहरण है
हरिसज़मन

10

इससे सावधान रहें window.history.lengthक्योंकि इसमें प्रविष्टियां भी शामिल हैंwindow.history.forward()

तो हो सकता है कि आपके पास window.history.length1 से अधिक प्रविष्टियाँ हों, लेकिन कोई इतिहास वापस प्रविष्टियाँ न हों। इसका मतलब है कि अगर आप फायर करते हैं तो कुछ नहीं होता हैwindow.history.back()


9

आप सीधे जाँच नहीं कर सकते हैं कि बैक बटन प्रयोग करने योग्य है या नहीं। आप देख सकते हैं history.length>0, लेकिन यह सही है अगर वर्तमान पृष्ठ के आगे भी पेज हैं। आप केवल यह सुनिश्चित कर सकते हैं कि बैक बटन कब अनुपयोगी हैhistory.length===0

यदि यह पर्याप्त नहीं है, तो आप जो कर सकते हैं उसके बारे में कॉल करें history.back()और, यदि आपका पृष्ठ अभी भी बाद में लोड किया गया है, तो बैक बटन अनुपलब्ध है! बेशक कि साधन करता है, तो वापस बटन है उपलब्ध, तो आप सिर्फ दूर पेज से नेविगेट किया हो। आपको नेविगेशन को रद्द करने की अनुमति नहीं है onunload, इसलिए सभी के बारे में आप वास्तव में हो रही पीठ को रोकने के लिए कर सकते हैंonbeforeunload , जिसमें , जिसके परिणामस्वरूप एक बड़ा कष्टप्रद संकेत दिखाई देगा। यह इसके लायक नहीं है।

वास्तव में यह सामान्य रूप से इतिहास के साथ कुछ भी करने के लिए एक बहुत बुरा विचार है। इतिहास नेविगेशन ब्राउज़र क्रोम के लिए है, न कि वेब पेज। "गो बैक" लिंक को जोड़ना आमतौर पर अधिक उपयोगकर्ता भ्रम का कारण बनता है जो इसके लायक है।


2
लंबाई के बारे में - तब भी सभी ब्राउज़रों में नहीं। कुछ ब्राउज़र वर्तमान पृष्ठ को एक इतिहास आइटम के रूप में गिनते हैं और 1 पर शुरू करते हैं। आपको ब्राउज़र का पता लगाना शामिल करना होगा।
मैकडॉन

वास्तव में मुझे लगा कि यह हमेशा था 1! 0एक brainfart था, मैंने सोचा था कि ब्राउज़रों हमेशा के साथ जवाब होगा 1या अधिक। ओपेरा और IE सोचता है कि अन्यथा अच्छी पकड़ है।
बॉबिन

1
"इतिहास नेविगेशन ब्राउज़र क्रोम के लिए है, वेब पेज नहीं" - सहमत
ब्रायन

5

history.lengthबेकार है क्योंकि यह नहीं दिखाता है कि उपयोगकर्ता इतिहास में वापस जा सकता है। इसके अलावा विभिन्न ब्राउज़र प्रारंभिक मानों 0 या 1 का उपयोग करते हैं - यह ब्राउज़र पर निर्भर करता है।

काम कर रहे समाधान का उपयोग करना है $(window).on('beforeunload' ईवेंट , लेकिन मुझे यकीन नहीं है कि यह काम करेगा यदि पृष्ठ को अजाक्स के माध्यम से लोड किया गया है और विंडो इतिहास को बदलने के लिए पुशस्टेट का उपयोग करता है।

इसलिए मैंने अगला समाधान उपयोग किया है:

var currentUrl = window.location.href;
window.history.back();
setTimeout(function(){
    // if location was not changed in 100 ms, then there is no history back
    if(currentUrl === window.location.href){
        // redirect to site root
        window.location.href = '/';
    }
}, 100);

मेरे लिए इस तरह काम करता है: goBackOrTo (targetUrl) {var currentUrl = window.location.href; window.history.go (-1); setTimeout (फ़ंक्शन () {// यदि स्थान 800 एमएस में नहीं बदला गया था, तो कोई इतिहास वापस नहीं है अगर (currentUrl === window.location.href) {// साइट रूट window.location.href = targetUrl पर पुनर्निर्देशित किया गया है; }}, 800); }
अल्फोंक्स

2

मैं निम्नलिखित दृष्टिकोण के साथ आया था। यह पता लगाने के लिए onbeforeunload घटना का उपयोग करता है कि ब्राउज़र पृष्ठ को छोड़ना शुरू करता है या नहीं। यदि यह एक निश्चित समय में नहीं होता है तो यह केवल कमबैक पर पुनर्निर्देशित होगा।

var goBack = function goBack(fallback){
    var useFallback = true;

    window.addEventListener("beforeunload", function(){
      useFallback = false;
    });

    window.history.back();

    setTimeout(function(){
        if (useFallback){ window.location.href = fallback; }
    }, 100); 
}

आप इस फ़ंक्शन का उपयोग करके कॉल कर सकते हैं goBack("fallback.example.org")


1
मुझे यह सबसे ज्यादा पसंद है, मैंने सिर्फ windows.onbeforeunloadश्रोता को इवेंट में बदला है, window.addEventListener("beforeunload", function (event) { useFallback = false; });इसलिए यह window.onbeforeunload को अधिलेखित नहीं करता है।
MiChAeLoKGB

2

यहां और यहां उत्तर पर निर्माण । मुझे लगता है, अधिक निर्णायक जवाब सिर्फ यह जांचने के लिए है कि क्या यह एक नया टैब में एक नया पृष्ठ है।

यदि पृष्ठ का इतिहास एक से अधिक है, तो हम पिछले पृष्ठ पर वर्तमान पृष्ठ पर वापस जा सकते हैं। यदि नहीं, तो टैब एक नया खोला गया टैब है और हमें एक नया टैब बनाने की आवश्यकता है।

अलग-अलग, जुड़े हुए उत्तरों के लिए, हम जाँच नहीं कर रहे हैं referrerक्योंकि नए टैब में अभी भी एक रेफ़र होगा।

if(1 < history.length) {
    history.back();
}
else {
    window.close();
}

1
धन्यवाद। आपने मेरा दिन बचाया :)।
बिजय यादव

1

सही समाधान के पास एक और है , दूसरे एसओ उत्तर से लिया गया है :

if( (1 < history.length) && document.referrer ) {
    history.back();
}
else {
    // If you can't go back in history, you could perhaps close the window ?
    window.close();
}

किसी ने बताया कि यह उपयोग करते समय काम नहीं करता है target="_blank"लेकिन यह क्रोम पर मेरे लिए काम करता है।


0

ब्राउज़र में पीछे और आगे बटन है। मैं इस प्रश्न का हल निकालता हूं। लेकिन यह ब्राउज़र फ़ॉरवर्ड एक्शन को प्रभावित करेगा और कुछ ब्राउज़रों के साथ बग पैदा करेगा।

यह इस तरह काम करता है: यदि ब्राउज़र एक नया यूआरएल खोलता है, जो कभी नहीं खोला गया है, तो इतिहास।

तो आप हैश की तरह बदल सकते हैं

  location.href = '#__transfer__' + new Date().getTime() 

कभी नहीं दिखाया गया url प्राप्त करने के लिए, फिर history.length वास्तविक लंबाई प्राप्त करेगी।

  var realHistoryLength = history.length - 1

लेकिन, यह हमेशा अच्छी तरह से काम नहीं करता है, और मुझे नहीं पता कि क्यों, विशेष रूप से जब url ऑटो जल्दी से कूदते हैं।


0

मैं एक समाधान खोजने की कोशिश कर रहा था और यह सबसे अच्छा मैं मिल सकता है (लेकिन महान काम करता है और यह सबसे आसान समाधान है जो मैंने यहां भी पाया है)।

मेरे मामले में, मैं बैक बटन के साथ इतिहास पर वापस जाना चाहता था, लेकिन यदि उपयोगकर्ता द्वारा खोला गया पहला पृष्ठ मेरे ऐप का एक उप-पृष्ठ था, तो यह मुख्य पृष्ठ पर वापस जाएगा।

समाधान था, जैसे ही ऐप लोड होता है, मैंने सिर्फ इतिहास की स्थिति पर एक प्रतिस्थापन किया:

history.replaceState( {root: true}, '', window.location.pathname + window.location.hash)

इस तरह, मुझे बस history.state.rootवापस जाने से पहले जांच करने की आवश्यकता है । अगर यह सच है, मैं एक इतिहास बनाने के बजाय जगह:

if(history.state && history.state.root)
    history.replaceState( {root: true}, '', '/')
else
    history.back() 

मुझे नहीं लगता कि अन्य अच्छा उपयोग मामला है। शायद यह एक अच्छा विचार नहीं है यदि आप अपने ऐप के बाहर के इतिहास की जांच करना चाहते हैं।
मैक्सवेल sc

-1
var fallbackUrl = "home.php";
if(history.back() === undefined)
    window.location.href = fallbackUrl;

यह सुपर आसान लग रहा है ?! क्या यह विभिन्न ब्राउज़रों पर परीक्षण किया गया है?
बेन्ज़की

क्रोम में history.back()है undefinedकेवल खाली टैब पृष्ठ पर
gregmatys

-2

उपाय

'use strict';
function previousPage() {
  if (window.location.pathname.split('/').filter(({ length }) => length > 0).length > 0) {
    window.history.back();
  }
}

explaination

window.location.pathnameआपको वर्तमान URI देगा। मसलन https://domain/question/1234/i-have-a-problemदेंगे /question/1234/i-have-a-problemWindow.location के बारे में दस्तावेज़ देखेंअधिक informations के लिए के ।

इसके बाद, कॉल से split()हमें उस URI के सभी टुकड़े मिलेंगे। इसलिए यदि हम अपना पिछला यूआरआई लेते हैं, तो हमारे पास कुछ ऐसा होगा ["", "question", "1234", "i-have-a-problem"]String.prototype.split () के बारे में दस्तावेज़ देखेंअधिक informations के लिए ।

filter()बैकवर्ड स्लैश द्वारा उत्पन्न खाली स्ट्रिंग को फ़िल्टर करने के लिए यहां कॉल किया जाता है। यह मूल रूप से केवल उस टुकड़े URI को लौटाएगा जिसकी लंबाई 1 (गैर-रिक्त स्ट्रिंग) से अधिक है। तो हमारे पास कुछ ऐसा होता ["question", "1234", "i-have-a-question"]। इस तरह लिखा जा सकता था:

'use strict';
window.location.pathname.split('/').filter(function(fragment) {
  return fragment.length > 0;
});

Array.prototype.filter () और अधिक informations के लिए विनाशकारी असाइनमेंट के बारे में प्रलेखन देखें ।

अब, यदि उपयोगकर्ता चालू रहते हुए वापस जाने की कोशिश करता है https://domain/, तो हम if-स्टेटमेंट को ट्रिगर नहीं करेंगे, और इसलिए इस window.history.back()विधि को ट्रिगर नहीं करेंगे जिससे उपयोगकर्ता हमारी वेबसाइट में बने रहेंगे। यह URL समतुल्य होगा []जिसकी लंबाई है 0, और 0 > 0गलत है। इसलिए, चुपचाप विफल। बेशक, आप कुछ लॉग इन कर सकते हैं या यदि आप चाहें तो एक और कार्रवाई कर सकते हैं।

'use strict';
function previousPage() {
  if (window.location.pathname.split('/').filter(({ length }) => length > 0).length > 0) {
    window.history.back();
  } else {
    alert('You cannot go back any further...');
  }
}

सीमाएं

बेशक, यह समाधान काम नहीं करेगा यदि ब्राउज़र इतिहास एपीआई का समर्थन नहीं करता है । इस समाधान का उपयोग करने से पहले इसके बारे में अधिक जानने के लिए प्रलेखन की जाँच करें।


-5

मुझे यकीन नहीं है कि यह काम करता है और यह पूरी तरह से अप्रयुक्त है, लेकिन यह प्रयास करें:

<script type="text/javascript">

    function goBack() {
        history.back();
    }

    if (history.length > 0) { //if there is a history...
        document.getElementsByTagName('button')[].onclick="goBack()"; //assign function "goBack()" to all buttons onClick
    } else {
        die();
    }
</script>

और कहीं HTML में:

<button value="Button1"> //These buttons have no action
<button value="Button2">

संपादित करें:

आप क्या कर सकते हैं यह भी शोध करना है कि ब्राउज़र बैक फ़ंक्शन का समर्थन करते हैं (मुझे लगता है कि वे सभी ऐसा करते हैं) और इस पृष्ठ पर मानक जावास्क्रिप्ट ब्राउज़र डिटेक्शन ऑब्जेक्ट का उपयोग किया गया है, और अच्छी तरह से वर्णित है । फिर आपके पास 2 अलग-अलग पृष्ठ हो सकते हैं: "अच्छे ब्राउज़र" के लिए एक बैक बटन के साथ संगत है और एक "खराब ब्राउज़र" के लिए है जो उन्हें अपने ब्राउज़र को अपडेट करने के लिए कहता है।


2
history.backएक समारोह है। आप जांचना चाहते हैं कि क्या history.length > 0तब अगर वह वापस आ गयाhistory.back()
पिक्सलर कोडर

3
इसके अलावा []एक नोडलिस्ट पर कोई मतलब नहीं है, और आप एक इवेंट हैंडलर को स्ट्रिंग असाइन नहीं कर सकते हैं।
बॉब

-8

जाँच करें कि window.history.lengthक्या 0 के बराबर है।


6
एक अच्छा तरीका नहीं है, चूंकि history.length आपको यह नहीं बताती है कि आप इतिहास में कहां हैं ...
Ron Reiter

@ रॉन रेइटर: हां, मुझे लगता है कि इस सवाल के लिए शीर्ष उत्तर और अन्य टिप्पणियां पहले ही स्थापित हो चुकी थीं ...
क्रिस्टियान सांचेज
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.