$(窗口)绑定hashchange如何检查部分哈希更改



我正在学习Google Ajax Crawlable

我使用$(window) bind hashchange来控制ajax页面加载。

my url like: domain.com/#!/keywords&num=1

有两种变化

  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{}
});

将哈希值存储在变量中,并在函数结束时更新该变量。考虑:

(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]+"nn"+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];
    }
})()

我会将原始哈希存储在一个变量中,然后检查新的哈希以判断变化。完成后,将新散列设置为原始散列:

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;
});

相关内容

  • 没有找到相关文章

最新更新