2011-08-25 132 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'); 
}