$(window) bind hashchange how to check part hash changed?

前端 未结 2 803
野的像风
野的像风 2021-01-05 15:19

I am studing Google Ajax Crawlable

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

my url like: domain.com/#!/

相关标签:
2条回答
  • 2021-01-05 15:53

    I would store the original hash in a variable, and then examine the new hash to judge the change. Once that is done, set the new hash to be the original:

    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;
    });
    
    0 讨论(0)
  • 2021-01-05 16:05

    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];
        }
    })()
    
    0 讨论(0)
提交回复
热议问题