2010-08-14 166 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>