窗口位置替换仅在刷新页面时有效

时间:2013-01-20 23:36:57

标签: jquery hash

我正在寻找以下问题的任何创意(和简单)解决方案 -

这个东西只适用于onload,但不是onclick:

<!--[if lt IE 9]> 
   <script type="text/javascript">
   if (window.location.hash == '#aciw') {
       window.location.replace("#checkout-counter-aciw");
   }
   </script>
<![endif]-->

因此,如果用户访问www.site.com,并点击将#aciw插入浏览器的链接,则不会发生任何事情。另一方面,如果他在浏览器中使用www.site.com/#aciw进行刷新,则哈希值会更改为www.site.com/#checkout-counter-aciw,一切都很顺利。

当然,我不希望这只能用于onload,我希望它特别适用于onclick,因为我有几个需要将IE8发送到完全不同的位置的链接。

我一直在玩这个:

window.location.hash = "#" + checkout-counter-aciw;

和此:

window.location.reload(true);

但到目前为止,它只是暂时将它们带到#checkout-counter-aciw然后它重新回到网站的顶部。

2 个答案:

答案 0 :(得分:1)

收听hashchange事件。它会在它发生变化时告诉你。

$(window).on("hashchange", function() {
    var hash = window.location.hash.substr(1);
});

答案 1 :(得分:0)

我最终做到了这一点,并且有效:

<!--[if lt IE 9]> 
<script type="text/javascript">

if (window.location.hash == '#aciw') {
    window.location.replace("http://www.site.com/#checkout-counter-aciw");
}

$(document).ready(function(){
        $('a.aciw').click(function(){  
           window.location.replace("http://www.site.com/#checkout-counter-aciw");
        });
});

</script>
<![endif]-->

对于我个人的笔记: 因此,如果初始请求的页面已包含#aciw哈希,则第一部分(“if”)有效, 第二部分(点击功能)如果他们第一次到达www.site.com(没有#aciw哈希),然后点击.aciw链接。