美文网首页
hash、hashchange事件

hash、hashchange事件

作者: 海之深处爱之港湾 | 来源:发表于2019-03-25 14:16 被阅读0次

1、hash即URL中"#"字符后面的部分。

①使用浏览器访问网页时,如果网页URL中带有hash,页面就会定位到id(或name)与hash值一样的元素的位置;

②hash还有另一个特点,它的改变不会导致页面重新加载;

③hash值浏览器是不会随请求发送到服务器端的;

④通过window.location.hash属性获取和设置hash值。

window.location.hash值的变化会直接反应到浏览器地址栏(#后面的部分会发生变化),同时,浏览器地址栏hash值的变化也会触发window.location.hash值的变化,从而触发onhashchange事件。

2、hashchange事件(IE8已支持该事件)

①当URL的片段标识符更改时,将触发hashchange事件(跟在#符号后面的URL部分,包括#符号)

②hashchange事件触发时,事件对象会有hash改变前的URL(oldURL)和hash改变后的URL(newURL)两个属性:

window.addEventListener('hashchange',function(e) { console.log(e.oldURL);  console.log(e.newURL) },false);

3、demo

    <!DOCTYPE html> 
    <html lang="en"> 
    <head> 
        <meta charset="UTF-8"> 
        <title>history 测试</title> 
    </head> 
    <body> 
    
        <p><input type="text" value="0" id="oTxt" /></p> 
        <p><input type="button" value="+" id="oBtn" /></p> 
        
        <script> 
            var otxt = document.getElementById("oTxt"); 
            var oBtn = document.getElementById("oBtn"); 
            var n = 0; 
            
            oBtn.addEventListener("click",function(){ 
                n++; 
                add(); 
            },false); 
            get(); 
            
            function add(){ 
                if("onhashchange" in window){ //如果浏览器的原生支持该事件
                 window.location.hash = "#"+n; 
                } 
            } 
            
            function get(){ 
                if("onhashchange" in window){ //如果浏览器的原生支持该事件
                    window.addEventListener("hashchange",function(e){ 
                        var hashVal = window.location.hash.substring(1); 
                        if(hashVal){ 
                            n = hashVal; 
                            otxt.value = n; 
                        } 
                    },false); 
                } 
            } 
        </script> 
    </body> 
    </html>

相关文章

  • hash、hashchange事件

    1、hash即URL中"#"字符后面的部分。 ①使用浏览器访问网页时,如果网页URL中带有hash,页面就会定位到...

  • js实现路由hash和history模式

    hash模式 hash模式是监听 hashchange 事件来实现的。 监听事件用 window.addEvent...

  • 前端router之hash和history

    vue,react的router有history和hash两种模式 hash 利用监听hashchange事件来前...

  • 2018-04-27

    HASH模式 hashChange事件监听 url的变化 通过window.location 方法处理哈希的改变...

  • hashchange事件

    hashchange事件是html5新增的api,用来监听浏览器链接的hash值变化。目前流行的spa框架的路由都...

  • 前端路由原理

    前端路由原理 ======== HashChange 事件 通过监听hasgchange事件,判断location...

  • 2018-01-23 hashchange事件

    今天的工作认真度70%,学到的新东西很少。 1,hashchange事件。 一开始我以为hashchange是jq...

  • H5 路由的两种实现

    1、原理浅析 hash模式如果a标签的href属性以"#"开头,那么当点击这个a标签时就会触发hashchange...

  • hashchange事件的妙用

    hashchange是什么? hash即URL中“#”字符后面的部分。使用浏览器访问网页时,如果网页URL中带有h...

  • 浅谈hashchange和popstate事件触发条件

    原文链接:https://blog.csdn.net/weixin_44173943/article/detail...

网友评论

      本文标题:hash、hashchange事件

      本文链接:https://www.haomeiwen.com/subject/jewvvqtx.html