需要关于 Window.location.hash 语法的帮助

7

我的网站可以在 http://visualise.ca/ 上访问。当你通过点击缩略图加载帖子时,它会使用ajax在页面内加载帖子。当你关闭帖子时,它会使用以下代码将url更改为http://visualise.ca/,而不重新加载页面:

$("#close").live("click", function(event) {
    $("#board").fadeOut("slow");
    $("#board-wrapper").slideUp("slow");
    $("html,body").delay(1000).animate({scrollTop: 0}, 300);
    window.location.hash = "";
    window.history.pushState(null,null,site_url+"/");
    return false;
});

但是在IE8中,它会将http://visualise.ca/#更改回http://visualise.ca/。有没有一种方法可以纠正这个问题,并确保它被更改为http://visualise.ca/


2
IE8不支持html5历史API,请考虑使用备用方案,如https://github.com/balupton/history.js。 - anderssonola
5个回答

3
这会阻止它吗?
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<script>
    $(document).ready(function() {    
    $(".testPhoto").click(function(event){
        event.stopPropagation();
        alert("do something");
        return false;
    });  
});
</script>
<a class="testPhoto" href="#testPhoto" onclick="testPhoto">Test Photo</a>

1

任何低于IE9的浏览器都会在没有结束哈希#的情况下重新加载页面。我的建议是检查IE并删除或清空内容。如果您确实想要精确的方法,您将不得不避开一些IE怪癖。

 if ( jQuery.browser.msie && ( parseInt( jQuery.browser.version ) < 9 ) ) {
     window.location = 'http://visualise.ca";
     document.execCommand( 'stop' );
 }

1

最近我一直在做很多ajax历史记录方面的工作。我正在尝试自己的实现方式,通过页面和模态框之间的导航来回切换。进展非常顺利。

从测试开始以来,我注意到根哈希值只有在浏览器后退按钮点击时才会丢失哈希符号(#),如果我将哈希值改回'',它将始终显示在末尾的 /#。

就IE8而言,我认为没有其他解决方案,只能使用iFrame hack,但由于我还没有测试过IE8/iFrame hack,因此无法发表评论。

对于我的解决方案,我使用了哈希和纯命令控制的混合方式。我应该在几周内完成最终版本的全面测试(希望如此)。

此外,谁在乎URL末尾留下哈希/井号呢?我一旦进入网站就从不看URL;我只看页面内容。真的:我突然意识到,只有在我想要复制和粘贴它时,URL才是重要的。除此之外,我从不看它。


0
window.location = window.location.href.replace( /#.*/, "");

这个适用于IE浏览器。


1
这会重新加载页面,但是不应该这样。;-) - Gab

0
$('#close').click(function(){

window.location = "http://visualise.ca/";

});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接