how to catch scroll event caused by hash bang anchor link?(如何捕捉hash bang锚链接引起的滚动事件?)
本文介绍了如何捕捉hash bang锚链接引起的滚动事件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我只是想知道有没有更好的方法来解决这个问题
所以,假设您有jump to
使用锚标记链接:
www.example.com/#about
打开该链接将使浏览器自动滚动到带有
部分<div id="about"></div>
现在,我要捕获此scroll
事件,以便可以添加更多offset
浏览器应使用的滚动量。
这是因为我有一个fixed
导航菜单,它使用浏览器的120px
。
问候,
推荐答案
AFAIK无法直接拦截此行为,即没有与其关联的用户可访问事件。相反,您可以使用window.location.hash
。加载页面后,您可以找到关联的元素并跳转到该元素。
例如:
function jumpToElement(element, offset) {
if (!offset) offset = 0;
var verticalPos = element.offsetHeight;
window.scrollTo(0, verticalPos + offset);
}
function jumpToHash(offset) {
var hash = window.location.hash;
// Do nothing if no hash exists
if (typeof hash !== 'string' || !hash.length) return;
var targetElement = document.getElementById(hash);
// Do nothing if targetElement doesn't exist
if (!targetElement) return;
jumpToHash(targetElement, offset);
});
if (document.readyState === "complete") {
jumpToHash(-120); // with 120px
} else {
document.addEventListener("DOMContentLoaded", jumpToHash);
}
这篇关于如何捕捉hash bang锚链接引起的滚动事件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:如何捕捉hash bang锚链接引起的滚动事件?


猜你喜欢
- addEventListener 在 IE 11 中不起作用 2022-01-01
- Flexslider 箭头未正确显示 2022-01-01
- Css:将嵌套元素定位在父元素边界之外一点 2022-09-07
- 如何使用 JSON 格式的 jQuery AJAX 从 .cfm 页面输出查 2022-01-01
- Quasar 2+Apollo:错误:找不到ID为默认的Apollo客户端。如果您在组件设置之外,请使用ProvideApolloClient() 2022-01-01
- 400或500级别的HTTP响应 2022-01-01
- 失败的 Canvas 360 jquery 插件 2022-01-01
- CSS媒体查询(最大高度)不起作用,但为什么? 2022-01-01
- Fetch API 如何获取响应体? 2022-01-01
- 使用RSelum从网站(报纸档案)中抓取多个网页 2022-09-06