【问题标题】:Does onHashChange work in Safari?onHashChange 在 Safari 中有效吗?
【发布时间】:2011-05-01 01:48:36
【问题描述】:

onHashChangehashChange 是否在 Safari 中工作?我在 Windows 7 上使用 Safari 4.0.4 对其进行了测试,但它对我不起作用。

如果不起作用,是否有任何解决方案可以跟踪hash 是否已更改?

【问题讨论】:

标签: javascript hash safari hashchange


【解决方案1】:

在我们的应用中,我们轮询以检查更改:

$b.hashCheck = setInterval(
    function(){
        if ( window.location.hash !== $b.C.current_hash){
            $b.C.current_hash = window.location.hash;

            //call the on change action here

        }
    },$b.C.hashCheckDelay
);

$b 是我们用于命名空间的全局对象,hashCheckDelay 根据经验设置为 120 毫秒。
虽然执行这种过程看起来有点难过,但在任何浏览器上都没有任何性能问题我们测试了。

【讨论】:

  • 感谢您的回答,这可能是跟踪不支持onHashChange 的浏览器中哈希是否已更改的解决方案,但这不是一个好的解决方案,因为需要大量查询性能太高了。
  • 我在我们的应用程序中使用它,但是一个函数会检查并将消息发送到相关对象。没有性能问题。
【解决方案2】:

Safari 4.0.4 中它还没有工作,但在最新的一个工作正常。而且我没有找到任何可接受的解决方案来跟踪那些不支持onHashChange的浏览器的哈希是否发生了变化。

【讨论】:

  • if ("onhashchange" in window) { alert("浏览器支持hashchange事件!"); }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多