当浏览器滚动到命名锚点时是否会触发事件?

时间:2013-10-10 14:54:36

标签: javascript javascript-events

使用命名锚链接到页面时,例如page.html#heading将浏览器加载页面,然后跳转到锚点。是否有一个浏览器事件在完成后触发?

解释其背后的原因:我想使用该事件在浏览器中触发动画。

非常感谢。

2 个答案:

答案 0 :(得分:3)

更改哈希会触发hashchange event

但是,我不认为在加载链接已经具有哈希集的URL时会触发它。 如果您希望根据哈希值运行某个脚本,则可以检查页面加载时的哈希值(location.hash)。

答案 1 :(得分:0)

在Mac上的Safari 7.0.3中,这有效......

HTML有:

<a id="jumper" href="#aa">Jump</a>

JS:

<script>
var j = document.getElementById("jumper");

j.addEventListener("click", registerAnchorJump);

function registerAnchorJump(e) {
    window.addEventListener("scroll", unregisterAnchorJump);
}

function unregisterAnchorJump(e) {
    // trigger your animation...
    console.log(window.scrollY);
    window.removeEventListener("scroll",unregisterAnchorJump);
}
</script>

花哨的步法,以防止在用户正常滚动窗口时不断触发滚动事件。