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

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...