修改location.href跳转到#锚点参数后如何执行指定代码?
监听浏览器原生的hashchange事件即可实现锚点变化后触发逻辑,该事件会在URL的哈希(#及后面的内容)发生变更时触发,不依赖页面重载。
你可以把要执行的逻辑封装为公共函数,同时绑定到页面加载和哈希变化两个场景,避免代码重复:
// 封装公共逻辑 function removeHeaderSticky() { // 若header变量不在当前作用域,可在这里重新获取:const header = document.querySelector('header') header.classList.remove("sticky"); } // 页面首次加载时执行 window.onload = removeHeaderSticky; // 锚点哈希变化时执行 window.onhashchange = removeHeaderSticky;
如果你的页面需要绑定多个同类型事件回调,推荐使用addEventListener方式绑定,避免覆盖已有的事件绑定:
window.addEventListener('load', removeHeaderSticky); window.addEventListener('hashchange', removeHeaderSticky);
内容的提问来源于stack exchange,提问作者Munchkin
相关产品推荐
相关产品推荐

