我有一些JavaScript代码,可能出现在许多不同的页面上。有时这些页面是通过包含锚点引用(例如#comment-100)的URL访问的。在这种情况下,我希望JavaScript延迟执行,直到窗口跳转后再执行。目前我只是使用延迟,但那相当于一个hackish的解决方案,而且显然并不适用于所有情况。我似乎找不到任何对应于窗口“跳跃”的DOM事件。
除了简单的延迟之外,我想到的唯一解决方案是让JS查找URL中的锚点,并在找到锚点时监听scrollTop
的更改。但是这似乎存在漏洞,并且我并不确定我的脚本是否始终会在滚动发生之前被触发,因此只有在用户手动滚动页面时它才会运行。总之,我不太喜欢这个解决方案,并希望有更多基于事件驱动的解决方案。你有什么建议吗?
编辑以澄清:
我不是要检测哈希值的更改。请看以下示例:
- 页面index.php包含指向
post.php#comment-1
的链接 - 用户单击链接
post.php#comment-1
post.php#comment-1
加载$(document).ready
触发- 不久后,浏览器将滚动到
#comment-1
我要可靠地检测步骤5何时发生。
$(document).ready()
触发过早? - Peter Ajtai