【问题标题】:JQuery window.location.hash not supported in IE? [duplicate]IE 不支持 JQuery window.location.hash? [复制]
【发布时间】:2012-09-04 03:12:09
【问题描述】:

可能重复:
window.location = #anchor doesn't work in IE

我有一个选择框,单击该框会更改基于 AJAX 的页面的 URL 中的哈希值。我有一个函数可以定期检查 window.location.hash 是否有变化,然后相应地更新内容。下面的代码是当 select 改变时改变 URL 的函数。它在 Firefox 中工作,但我无法让它在 IE 中工作!我不断收到一个对象不支持此属性或方法错误:

#ob 是我的选择

$("#ob").change(function() {
   ob = $(this).val();
   window.location.hash = "#ob=" + ob;
});

有什么建议吗?谢谢!

【问题讨论】:

  • 你用的是哪个IE版本? IE7及以下不支持onhashchange事件。

标签: javascript jquery internet-explorer hash onchange


【解决方案1】:

问题不在于哈希,错误发生在前一行。
用 var-keyword 声明变量:

$("#ob").change(function() {
   var ob = $(this).val();
   window.location.hash = "#ob=" + ob;
});

在这里阅读解释:jQuery selector does not work in IE7/8

【讨论】:

  • 虽然很好,但这并不能解决问题。
  • 请允许我改述一下:这不应该解决问题。我知道 IE 将每个元素的 ID 添加为全局属性,但据我记得,覆盖这些不是问题。 I did some testing,奇怪的是,只是分配给全局 ob 确实会抛出。但是,如果您首先覆盖 window.ob,则可以正常工作。
【解决方案2】:

与其滚动您自己的状态管理,不如使用一个久经考验的库来为您处理所有事情。我最喜欢的是jQuery BBQ

$("#ob").change(function() {
   var ob = $(this).val();
   $.bbq.pushState({ ob:ob });
});

作为额外的奖励,BBQ 挂钩到现代浏览器的 onhashchange 事件,而不是轮询 location.hash 的更改。

【讨论】:

    猜你喜欢
    • 2012-04-03
    • 2012-09-23
    • 1970-01-01
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 2011-10-17
    • 1970-01-01
    相关资源
    最近更新 更多