在IE9使用history.pushstate(Using history.pushstate in

2019-07-18 05:50发布

由于window.history.pushState不aviliable对HTML 4级的浏览器IE9一样,我已经看过了history.js,模拟的pushState的行为jQuery库。

问题是,使用pushState的时候,该网址的结尾被复制

例如,

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,它的网址:

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

感谢好心帮

Answer 1:

您的代码不正是你希望它是什么。

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

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

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



Answer 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]-->

您现在可以推的状态,他们不会同时在搜索和散列显示(后这是?#分别)



Answer 3:

刚刚从删除window.location.pathname History.pushState

History.pushState(null,null,'?page=1');


Answer 4:

也许尝试:

History.replaceState(null,null,'?issue=' + currPageIssueNo + '&page=' + pageNo);


文章来源: Using history.pushstate in IE9