哈希路径

js 哈希路由原理实现

在 js 中,有一种方法,可以在不刷新页面的情况下,页面的内容进行变更,就是 哈希路由原理

先看一个简单的路由和页面内容关联的例子,要实现两个功能:

1.1. 浏览器的路由变化,页面内容跟着变化

1.2.页面内容变换,浏览器的内容跟着变化

实现过程:

1.3.设定一个页面按钮,点击按钮时,改变页面的内容

1.4.设定浏览器的内容,跟随页面内容的变化而变化,即:直接赋值给浏览器的hash属性就可以了

1.5.监听浏览器的hash值,如果hsah改变了,则页面内容跟随变化

简单代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>哈希路径</title>
    <style>
        body {
            margin: 0;
            padding: 0
        }
        ul,li {
            margin: 0;
            padding: 0;
            list-style: none;
        }
        .ul>li {
            float: left;
            width: 200px;
            height: 80px;
            text-align: center;
            line-height: 80px;
            border: 1px solid #000;
        }
    </style>
</head>
<body>
    <div class="container" id="con"></div>
    <ul class="ul">
        <li><a href="#a">a页面</a></li>
        <li><a href="#b">b页面</a></li>
        <li><a href="#c">c页面</a></li>
    </ul>
</body>
<script>
   var con = document.getElementById('con');
   window.onhashchange = function(e) {
       var hash = window.location.hash;
       console.log(hash)
        //打印结果为在哪个页面当前页面的路由(#a ,#b, #c)
       console.log(window.location)
        //此时打印的window.location中显示当先页面的hash
微信图片_20190618203604.png
//    con.innerHTML = '<div class="nav">' + + '</div>';
       switch(hash) {
           case ('#a'):
           con.innerHTML = '<div class="nav">aaa</div>';
           break;
           case ('#b'):
           con.innerHTML = '<div class="nav">bbb</div>';
           break;
           case ('#c'):
           con.innerHTML = '<div class="nav">ccc</div>';
           break;
       }
   }
</script>
</html>
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 28,403评论 1 45
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,697评论 1 92
  • 【转载】CSDN - 张林blog http://blog.csdn.net/XIAOZHUXMEN/articl...
    竿牍阅读 8,823评论 1 14
  • 前端开发面试题 面试题目: 根据你的等级和职位的变化,入门级到专家级,广度和深度都会有所增加。 题目类型: 理论知...
    怡宝丶阅读 7,410评论 0 7
  • 托尔斯泰和屠格涅夫虽然在儿时就学习英语、法语、德语,他们仍有高超的俄语造诣。吉本用法语写作挥洒自如,但这并未破坏其...
    教育小札阅读 3,218评论 0 0

友情链接更多精彩内容