1

由于 window.history.pushState 不适用于 IE9 等 HTML 4 浏览器,因此我寻找了 history.js,这是一个模拟 pushState 行为的 jQuery 库。

问题是,当使用 pushState 时,url 的结尾是重复的

例如,

History.pushState(null,null,window.location.pathname + '?page=1');

返回,

http://www.development.com/test.html#test.html?page=1

我该如何避免这个问题?非常感谢你。

更新(2012 年 1 月 22 日),悬赏问题:

                if (pageNo == 1){
                    //window.history.pushState({"html":currURL,"pageTitle":''},"", window.location.pathname + '?page=1'); For chrome and FX only
                    //History.replaceState(null,null,'')
                    //History.pushState(null,null,'?issue=' + currPageIssueNo + '&page=1');
                }   
                else if (pageNo != 1 || pageNo == 1 && linkPageNo > 1  ) {
                    History.pushState(null,null,'?issue=' + currPageIssueNo + '&page=' + pageNo);
                    //window.history.pushState({"html":currURL,"pageTitle":''},"", newURL);   For chrome and FX only
                }

我还是遇到这个问题,如果是第一页

http://localhost/development/flipV5.html?issue=20121220&page=1

当我转到 IE9 的第二页时,它有 url:

http://localhost/development/flipV5.html?issue=20121220&page=1#flipV5.html?issue=20121220&page=2

我想实现的是

http://localhost/development/flipV5.html?issue=20121220&page=2

如果 HTML 4 浏览器不可能,请至少实现

http://localhost/development/flipV5.html/#?issue=20121220&page=2

感谢您的帮助

4

4 回答 4

3

您的代码完全符合您的预期。

window.location.pathname + '?page=1'

打印出位置路径名 ( test.html),并附加?page=1

删除window.location.pathname它应该可以工作。

于 2013-01-15T17:10:00.717 回答
2

您需要为 IE 设置客户端重定向。假设用户登陆此页面:

http://localhost/development/flipV5.html?issue=20121220&page=1

他们需要被送到

http://localhost/development/flipV5.html#?issue=20121220&page=1

原因是 IE <= 9 不允许您在散列之前修改任何内容,而不会将用户发送到新页面。这是一项旧的安全功能,可防止facebook.com在您真正使用spambook.com. 最近,人们意识到这太过分了。

重定向如下所示:

<!--[if LTE IE 9]>
<script type="text/javascript">
if (location.search) 
    location.href = location.pathname + "#" + location.search;
</script>
<![endif]-->

您现在可以推送状态,它们不会同时出现在搜索和哈希中(分别在?and之后#

于 2013-01-28T07:21:46.690 回答
1

只需从中删除 window.location.pathnameHistory.pushState

History.pushState(null,null,'?page=1');
于 2013-01-15T17:09:24.647 回答
0

也许尝试:

History.replaceState(null,null,'?issue=' + currPageIssueNo + '&page=' + pageNo);
于 2013-01-24T08:06:25.713 回答