微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我如何知道一个页面是否已经跳转到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.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐