我有一些
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.