检测Firefox和Windows IE Edge中哈希URL上浏览器端滚动重新定位的JavaScript事件
在尝试调整一些滚动脚本以在某些页面上执行“跳转到”链接时,我注意到,如果您有一个URL中包含哈希标记的页面,则在加载页面后,当您在地址栏上按enter键时,其行为会因浏览器而异 例如,如果您加载一个URL中带有has的页面,然后滚动到目标元素之外,我注意到在Firefox和IE上,如果您将光标放在地址栏上并按enter键,页面将移回具有与hashtag相同的检测Firefox和Windows IE Edge中哈希URL上浏览器端滚动重新定位的JavaScript事件,javascript,html,jquery,jquery-events,Javascript,Html,Jquery,Jquery Events,在尝试调整一些滚动脚本以在某些页面上执行“跳转到”链接时,我注意到,如果您有一个URL中包含哈希标记的页面,则在加载页面后,当您在地址栏上按enter键时,其行为会因浏览器而异 例如,如果您加载一个URL中带有has的页面,然后滚动到目标元素之外,我注意到在Firefox和IE上,如果您将光标放在地址栏上并按enter键,页面将移回具有与hashtag相同的id属性的HTML元素,但是页面不会被重新加载 我还注意到,在这种场景中,popstate和hashchange事件都不会被触发。scrol
id
属性的HTML元素,但是页面不会被重新加载
我还注意到,在这种场景中,popstate
和hashchange
事件都不会被触发。scroll
事件很可能会被触发,但我们怎么知道这不是用户滚动而是浏览器重置其位置
浏览器中是否存在检测此类事件的was?鉴于这是在视口之外,我有点好奇。但我有一个场景,我想重新定位菜单,这取决于页面是否向上或向下滚动
试着解释一下我在寻找什么:
#test
和元素
所在的位置
所在的位置如果要复制,请确保在Windows上使用Firefox。看起来其他操作系统也有其他行为。鉴于缺乏答案,我的假设答案是
否
使用URL和地址栏中的片段标识符(akahash
)无法检测浏览器的重新定位
除此之外,浏览器似乎有不一致的行为:
检测片段标识符重新定位的唯一安全方法是加载页面时。有滚动事件,如果是可聚焦的elm被片段击中,可能会触发onfocus。好了,没有内置的通用导航事件。@NicolasBouvrette如果您的代码进行滚动,当然您应该知道代码中的位置,否则滚动的一定是用户。@guest271314,正如我试图解释的,这似乎是Firefox和IE的行为。当您在URL中包含哈希的页面上时,加载页面后,如果您在该页面上滚动并返回地址栏并按enter键,浏览器将重新定位页面而不重新加载。让我更新这个问题,试图澄清这一点。@guest271314我想Windows有了不同的行为,变量在我这边没有增加。在这里找到移动证据:@guest271314感谢您的尝试-我怀疑对我的答案是否有任何回应。我只是想确认一下:)