2011-08-25 139 views
7

我的网站位于http://visualise.ca/,当您通过单击缩略图加载帖子时,它将使用ajax在页面内加载帖子。当您关闭后它使用此代码,以更改URL回http://visualise.ca/无需重新加载页面:需要语法的Window.location.hash帮助

$("#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

回答

1

我碰巧在最近做了很多ajax历史。我正在尝试自己的实现,通过页面和模式以及后退和第四次浏览。取得很好的进展。

自从测试开始,我已经注意到了根散列; ONCE CHANGED回到初始页面(它开始的所有地方),如果它是一个BROWSER BACK按钮点击,它只会丢失散列(#)。如果我将哈希更改回“”,它总是会在最后显示/#。我不相信有任何解决方案,但使用iFrame黑客,因为我还没有得到测试IE8/iframe的黑客入侵,我不能评论它。

对于我的解决方案,我使用散列和纯命令控制的混合。我应该在几周内完成最终版本的测试(如意算盘)。

此外,谁在乎是否在网址末尾留下散列/尖锐。一旦我登录网站,我永远不会看到网址;我只是看看页面的内容。真的:只是当我想复制并粘贴它时,它只是对我很重要。除此之外,我从来不看它。

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

这将适用于IE。

+1

这会重新加载页面。它不能。 ;-) – Gab

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

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

}); 
+1

这将重新加载页面。不好 ;-) – Gab

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'); 
}