2013-05-18 6 views
5

जैसा कि प्रलेखन (http://www.asual.com/jquery/address/docs/) में देखा जा सकता है, प्लगइन में यह पता लगाने के लिए एक ईवेंट है कि ब्राउजर का बैक/फॉरवर्ड बटन दबाया गया था।jquery पता प्लगइन में पीछे/आगे के बीच अंतर

$ .address.externalChange (एफ एन)

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

$.address.externalChange(function() { console.log('back/forward pressed'); }); 

धन्यवाद।

उत्तर

2

मेरे ज्ञान के लिए, कोई इतिहास प्लगइन यह पता लगा सकता है कि कौन सा ब्राउज़र बटन दबाया गया है।

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

Untested उदाहरण कोड:

var visitedPages = [$.address.path()]; 
var currentPage = $.address.path(); 

$.address.internalChange(function() { 
    visitedPages.push($.address.path()); 
}); 

$.address.externalChange(function() { 
    var newPage = $.address.path(); 
    var currentPageIndex = -1; 
    var newPageIndex = -1; 

    for (var i = 0; i < visitedPages.length; i++) { 
     if (visitedPages[i] == currentPage) currentPageIndex = i; 
     if (visitedPages[i] == newPage) newPageIndex = i; 
    } 

    if (newPageIndex == -1 || currentPageIndex == -1) { 
     console.log("unkown button pressed"); 
    } else { 
     if (newPageIndex > currentPageIndex) { 
      console.log('forward pressed'); 
     } else 
     if (newPageIndex < currentPageIndex) { 
      console.log('back pressed'); 
     } else { 
      console.log('page reloaded?'); 
     } 
    } 
}); 
+0

मैं इसे वास्तव में काम करने के लिए नहीं मिल सकता। मैं एक jsfiddle बनाने की कोशिश कर रहा हूँ, लेकिन मैं न तो सक्षम हूँ। धन्यवाद – Alvaro

+0

मैंने आपको बक्षीस दिया, लेकिन अभी भी इसे काम पर नहीं लाया जा सकता है। क्या आप एक बेवकूफ पोस्ट कर सकते हैं, कृपया? – Alvaro

+0

शायद आप एक पहेली शुरू कर सकते हैं और हम देखेंगे कि समस्या क्या है? – Tyron

0

मैं अंत में पता लगा। यह कोड मेरे लिए एक सामान्य पृष्ठ नेविगेशन में काम करता है, जहां मैं बीच में नेविगेट करता हूं: पृष्ठ 1, पृष्ठ 2, पृष्ठ 3 इत्यादि। कोड उन मामलों में पीछे और आगे पहचानता है।

var visitedPages = [$.address.path()]; 
var first_load = true; 

$.address.internalChange(function() { 

    visitedPages.push($.address.path()); 

}); 

$.address.externalChange(function() { 

    var newPage = $.address.path(); 

    if (visitedPages[visitedPages.length-2] == newPage) { 

     console.log('back'); 
     visitedPages.splice(visitedPages.length-1 , 1); 

    } else if (first_load === false) { 

     console.log('forward');  
     visitedPages.push($.address.path()); 

    } 

    first_load = false; 

}); 
संबंधित मुद्दे