history api

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div class="container">
    <div class="jumbotron" id="contentHolder">
        <!--<h1>Home!</h1>-->
        <!--<p>Lorem Ipsum is simply dummy text of the printing and typesetting industry.</p>-->
        //history有三个
        history.replaceState() 修改路径中的参数  不会添加历史数据
        history.pushState() 修改路径中的参数  会添加历史数据
        popstate事件   是返回的时候 会执行的事件
    </div>
</div>
</body>
<script src="./build/jquery.min.js"></script>
<script type="text/javascript">
    jQuery('document').ready(function () {
        (function(url, addEntry) {
            $.get('about.html')
                    .done(function (data) {
                        $('body').html(data);
                        if (addEntry == true) {
                            history.replaceState(null, null, url);//路径中默认添加的参数  用replace所以不能返回
                        }

                    });
        }());
        jQuery('.historyAPI').on('click', function (e) {
            e.preventDefault();
            var href = $(this).attr('href');
            getContent(href, true);
        });

    });

    window.addEventListener("popstate", function (e) {
        getContent(location.pathname, false);//返回的时候 会执行的方法 可以在返回的时候 ajax请求 因为监控了路径的参数的变化
    });

    function getContent(url, addEntry) {
        $.get(url)//  url => about.html  类似这种  about.html 则可以直接为元素  不用写文档模型 DOCTYPE等元素
                .done(function (data) {
                    $('body').html(data);//注意:是先请求成功,返回数据。
                    if (addEntry == true) {
                        history.pushState(null, null, url);//每次请求返回后,就添加历史数据
                    }

                });
    }
</script>
</html>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容