YiluPHP
这家伙很懒,什么都没有留下...

经验 利用HTML5新特性改变浏览器地址后不刷新页面

浏览数 188428
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width" />
    <title>@ViewBag.Title</title>
    @Styles.Render( "~/Content/css" )
    @Scripts.Render( "~/bundles/modernizr" )
</head>
<body>

    <div>
        <a href="/">首页</a> / <a href="/home/news">公司新闻</a>  / <a href="/home/news/1">新品速递</a>
    </div>
    <br />
    <div id="page">
        @RenderBody()
    </div>
    @Scripts.Render( "~/bundles/jquery" )
    @RenderSection( "scripts", required: false )

    <script type="text/javascript">
        $(function () {
            window.onpopstate = function (e) {
                //点击浏览器的前进后退按钮处理
                if (e.state) {
                    document.title = e.state.title;
                    $.ajax({
                        type: "get",
                        url: e.state.url,
                        success: function (data) {
                            $("#page").html(data)
                        },
                        error: function (data) {

                        }
                    })
                }
            }

            //处理点浏览器返回时候最后一个不刷新页面内容问题
            var state = {
                title: document.title,
                url: document.location.href,
                otherkey: null
            };
            history.replaceState(state, document.title, document.location.href);


            $("a").click(function () {
                var _href = $(this).attr("href");
                $.ajax({
                    type: "get",
                    url: _href,
                    success: function (data) {

                        //加入到历史状态里面
                        var state = {
                            title: data,
                            url: _href,
                            otherkey: null
                        };
                        history.pushState(state, data, _href);
                        

                        $("#page").html(data)
                    },
                    error: function (data) {

                    }
                })

                return false;
            })
        })
    </script>
</body>
</html>
我来说说