2013-01-20 29 views
0

我正在尋找任何創造性的(簡單的)解決了以下問題 -窗口位置只能更換工作

這件事只能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,一切正常。

當然,我不希望這隻能工作,我希望它特別工作onclick,因爲我有幾個鏈接需要發送IE8到一個完全不同的位置。

我一直在玩弄添加此:

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

這:

window.location.reload(true); 

但到目前爲止,它只是暫時把他們帶到#結帳櫃檯,ACIW,然後將其卡備份到網站的頂部。

回答

1

收聽hashchange事件。它會告訴你什麼時候改變。

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

謝謝,我不知道如何實現這一點。 – user1691389

+0

本示例基於jQuery庫,在腳本之前包含它,並且所有應該按預期工作。 – Nazariy

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散列, 和第二部分(點擊功能)如果他們第一次到達www.site.com(沒有#aciw散列),則點擊.aciw鏈接。