【发布时间】:2011-04-03 10:14:21
【问题描述】:
我有一些 javascript 可以出现在许多不同的页面上。有时,这些页面是通过包含锚引用的 URL 访问的(例如#comment-100)。在这些情况下,我希望 javascript 延迟执行,直到窗口跳转之后。现在我只是在使用延迟,但这很不合时宜,显然并非在所有情况下都有效。我似乎找不到任何与窗口“跳转”相对应的 DOM 事件。
除了简单的延迟之外,我想出的唯一解决方案是让 JS 在 URL 中查找锚点,如果找到,请注意 scrollTop 的变化。但这似乎有问题,而且我不能 100% 确定我的脚本总是会在滚动发生之前被触发,所以它只有在用户手动滚动页面时才会运行。无论如何,我不太喜欢这个解决方案,而是更喜欢事件驱动的东西。有什么建议吗?
编辑澄清:
我不想检测哈希更改。举个例子:
- 页面 index.php 包含指向 post.php#comment-1 的链接
- 用户点击post.php#comment-1的链接
- post.php#comment-1 加载
- $(document).ready 触发
- 不久之后,浏览器向下滚动到#comment-1
我正在尝试可靠地检测第 5 步何时发生。
【问题讨论】:
-
$(document).ready()触发太早?
标签: javascript jquery dom javascript-events