$(window)绑定hashchange如何检查部分hash改变了? [英] $(window) bind hashchange how to check part hash changed?

查看:306
本文介绍了$(window)绑定hashchange如何检查部分hash改变了?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在学习Google Ajax Crawlable

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

I use $(window) bind hashchange to control ajax page loading.

我的网址,例如:domain.com/#!/keywords&num=1

有两种变化

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

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

那么如何检查$(window) bind hashchange是否从apple => banana更改了哈希部分?谢谢.

so how to check if $(window) bind hashchange changed hash part from apple => banana ? Thanks.

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

推荐答案

将哈希存储在变量中,并在函数末尾更新变量.考虑:

Store the hash in a variable, and update the variable at the end of the function. Consider:

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

这篇关于$(window)绑定hashchange如何检查部分hash改变了?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆