2010-08-14 174 views
0

我在我的網站上有以下代碼,它主要檢查URL中是否存在散列,如果存在,那麼它會觸發標籤上的點擊。除了Chrome/Safari之外,這種方式可以很好地工作 - 我有什麼想法可以解決這個問題?window.location.hash在Chrome/Safari中不起作用

jQuery(document).ready(function() { 
    if(window.location.hash){ 
     $("a#viewapart").trigger('click'); 
    } 
}); 

如果我替換alert('hello'),它不起作用;所以它只是不知道是否由於某種原因(window.location.hash)。

謝謝!

+1

我在很多網站的Chrome中測試了'javascript:alert(window.location.hash?true:false)'...並且工作! – Topera 2010-08-14 10:50:35

+1

如果沒有空間限制,請不要提供縮短的網址;我真的想知道我要去哪裏,*之前*我點擊一個鏈接。 – 2010-08-14 15:53:27

+0

@Marcel Korpel,同意。並編輯。 =) – 2010-08-14 16:27:54

回答

1

您可能會在輪播腳本初始化並綁定所有點擊之前執行它。

$(document).ready(function() { 
    if (window.location.hash){ 
     $("a#viewapart").trigger('click'); 
    } 
    $("#slider").jcarousel(); 
}); 

您需要執行它後,輪腳本被初始化。

$(document).ready(function() { 
    $("#slider").jcarousel(); 
    if (window.location.hash){ 
     $("a#viewapart").trigger('click'); 
    } 
}); 
+0

這有效!但是現在看起來在載入所有圖片之前如此緩慢,以至於滑到下一張幻燈片。我確信我錯過了一個更簡單的方式 - 但謝謝! – Chris 2010-08-14 19:35:37

0

嘗試這樣的:

if (window.location.hash != null && window.location.hash.length > 0) { 
    $('a#viewapart').trigger('click'); 
} 
+0

多麼令人沮喪 - 這似乎工作在點擊標籤(這是突出顯示的一個),但標籤內容不顯示。只有當我點擊另一個標籤,然後再次回到它顯示。至少我更近一步了! – Chris 2010-08-14 10:51:07

0

應該工作,除非你是動態設置的哈希值。

jQuery(document).ready(function() { 
    var t = window.location; 
    var hash = t.hash || ((t = t.href.match(/#([^?]*)/)) && t[1]); 
    if(hash){ 
     $("a#viewapart").trigger('click'); 
    } 
}); 
+0

這與上面的效果相同 - 該選項卡似乎已被點擊,但該選項卡的內容未顯示。網址是:http://bit.ly/cg7cw0 - 在'公寓'選項卡上打開公寓列表,點擊'下一頁'按鈕刷新下一批公寓的頁面,它在這裏我想要再次使用url中的hasg作爲觸發器自動切換到公寓選項卡。有沒有更簡單的方法來做到這一點? – Chris 2010-08-14 14:31:16

+0

將其更改爲$(document).ready(),而不是$(window).load() – BGerrissen 2010-08-14 17:32:20

0

如果你試圖把一個SCRIPT標籤只是</BODY>標籤,而不是之前?

... 
    <script> 
    if(window.location.hash){ 
     $("a#viewapart").trigger('click'); 
    } 
    </script> 
</body>