2011-10-08 9 views
6

मैं Google Ajax Crawlable

का अध्ययन कर रहा हूँ मैं $(window) bind hashchange का उपयोग ajax पेज लोड हो रहा है को नियंत्रित करने के।

की तरह मेरा url:

वहाँ परिवर्तन के दो प्रकार

  1. domain.com/#!/apple&num=1 =>domain.com/#!/apple&num=2

  2. domain.com/#!/apple&num=1 =>domain.com/#!/banana&num=1

तो है कैसे जांचें कि $(window) bind hashchange ने apple =>banana से हैश भाग बदल दिया है? धन्यवाद।

$(window).bind('hashchange', function() { 
    // make a judge like if(){}else{} 
}); 
+0

दूसरा अद्यतन हैश केवल फल नाम परिवर्तन नहीं किया, लेकिन यह भी: एक बार है कि किया जाता है, नए हैश वास्तविक रूप देने के लिए सेट करें। –

उत्तर

13

हैश को एक चर में स्टोर करें, और फ़ंक्शन के अंत में चर अद्यतन करें। पर विचार करें:

(function(){ 
    var lastHash = location.hash; 
    $(window).bind('hashchange', function() { 
     var newHash = location.hash; 
     // Do something 
     var diff = compareHash(newHash, lastHash); 
     alert("Difference between old and new hash:\n"+diff[0]+"\n\n"+dif[1]); 

     //At the end of the func: 
     lastHash = newHash; 
    }); 

    function compareHash(current, previous){ 
     for(var i=0, len=Math.min(current.length, previous.length); i<len; i++){ 
      if(current.charAt(0) != previous.charAt(0)) break; 
     } 
     current = current.substr(i); 
     previous = previous.substr(i); 
     for(var i=0, len=Math.min(current.length, previous.length); i<len; i++){ 
      if(current.substr(-1) != previous.substr(-1)) break; 
     } 

     //Array: Current = New hash, previous = old hash 
     return [current, previous]; 
    } 
})() 
+0

क्या एक अच्छा काम है। धन्यवाद। – Giberno

3

मैं एक चर में मूल हैश संग्रहीत करेंगे, और फिर परिवर्तन का न्याय करने के लिए नए हैश जांच करते हैं। संख्या

var originalHash = window.location.hash; 
$(window).bind('hashchange', function() { 
    var newHash = window.location.hash; 
    //do your stuff based on the comparison of newHash to originalHash 

    originalHash = newHash; 
}); 
+1

क्या मैं (window.location) के परिवर्तन का पता लगा सकता हूं और इसे संभाल सकता हूं? (jquery के बिना) – BergP

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