【问题标题】:window.location.hash not working in Chrome/Safariwindow.location.hash 在 Chrome/Safari 中不起作用
【发布时间】:2012-09-25 10:26:28
【问题描述】:

我的网站上有以下代码,它主要检查 URL 中是否有哈希,如果有,则触发点击选项卡。除了在 Chrome/Safari 中之外,这都可以正常工作 - 有什么想法可以解决这个问题吗?

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

如果我用 alert('hello'); 代替它不起作用所以它只是因为某种原因无法识别 if(window.location.hash)。

谢谢!

【问题讨论】:

  • 我在许多网站的 chrome 中测试了 javascript:alert(window.location.hash ? true : false)...并且工作正常!
  • 如果没有空间限制,请不要提供缩短的网址;我真的很想知道我要去哪里,在我点击一个链接之前
  • @Marcel Korpel,同意。并编辑。 =)

标签: javascript jquery webkit


【解决方案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');
    }
});

【讨论】:

  • 这行得通!但是现在在滑到下一张幻灯片之前加载所有图片似乎很慢。我确定我在某个地方错过了一个更简单的方法 - 但谢谢!
【解决方案2】:

试试这样:

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

【讨论】:

  • 多么令人沮丧 - 这似乎在单击选项卡时起作用(它是突出显示的),但选项卡式内容没有显示。只有当我单击另一个选项卡然后再次返回它时它才会显示。至少我更近了一步!
【解决方案3】:

应该可以,除非您动态设置哈希。

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

【讨论】:

  • 这与上面的效果相同 - 选项卡似乎已被单击,但选项卡的内容并未显示。网址在这里:bit.ly/cg7cw0 - 在“公寓”选项卡上,它会显示公寓列表,单击“下一页”按钮会刷新包含下一批公寓的页面,我想在这里自动切换再次到公寓选项卡,使用 url 中的 hasg 作为触发器。有更简单的方法吗?
【解决方案4】:

如果您尝试将SCRIPT 标记放在</BODY> 标记之前?

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-28
    • 1970-01-01
    • 2013-07-19
    • 2014-10-14
    • 2013-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多