我如何知道一个页面是否已经跳转到JavaScript中的锚点(#)?

前端之家收集整理的这篇文章主要介绍了我如何知道一个页面是否已经跳转到JavaScript中的锚点(#)?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一些 JavaScript可以出现在许多不同的页面上.有时,这些页面已通过包含锚点引用(例如#comment-100)的URL访问.在这些情况下,我希望javascript延迟执行,直到窗口跳过.现在我只是使用一个延迟,但这很漂亮,显然在所有情况下都不起作用.我似乎找不到对应于窗口“跳”的任何类型的DOM事件.

除了简单的延迟之外,我想出的唯一的解决方法是让JS在URL中查找锚点,如果找到一个锚点,请注意scrollTop中的更改.但是,这似乎是buggy,我不是100%确定我的脚本将总是被触发之前,滚动发生,所以它只会运行,如果用户手动滚动页面.无论如何,我不太喜欢这个解决方案,而是喜欢更多的事件驱动.有什么建议么?

编辑澄清:

我不是想检测一个哈希更改.举个例子:

> page index.PHP包含一个指向post.PHP#comment-1的链接
>用户点击链接到post.PHP#comment-1
> post.PHP#comment-1加载
> $(document).ready fire
>不久之后,浏览器会滚动到#comment-1

我试图可靠地检测步骤5发生的时间.

解决方法

好像你可以使用 window.onscroll.我刚刚测试了这个代码
<a name="end" />
<script type="text/javascript">
    window.onscroll = function (e) {
        alert("scrolled");
}
</script>

这似乎工作.

编辑:嗯,它不工作在IE8.它可以在Firefox和Chrome中工作.

编辑:jQuery有一个.scroll()处理程序,但它在IE滚动之前触发,似乎不适用于Chrome或Firefox.

猜你在找的JavaScript相关文章