可通过修改JavaScript、使用内容拦截扩展或注入用户脚本阻止Safari自动滚动至URL中的#锚点位置。

如果您在使用 Safari 浏览器访问网页时,发现页面自动滚动到 URL 中的片段标识符(即 # 后面的部分)所对应的位置,这可能会影响浏览体验。以下是解决此问题的方法:
本文运行环境:MacBook Air,macOS Sonoma
一、禁用页面加载时的自动滚动行为
通过修改网页的 JavaScript 行为,可以阻止 Safari 在页面加载时自动跳转到 hash 对应的元素位置。该方法适用于网站开发者或可编辑网页代码的用户。
1、打开目标网页的 HTML 源码或相关 JavaScript 文件。
2、在页面加载事件中添加以下脚本代码:
window.history.replaceState(null, null, window.location.pathname);
3、保存并重新加载网页,此时即使 URL 包含 #hash,页面也不会自动滚动。
二、使用浏览器扩展拦截 hash 导航
借助第三方内容拦截工具,可以在 Safari 中阻止包含特定行为的页面脚本执行,从而防止滚动到 hash 位置。Safari 支持基于规则的内容拦截器扩展。
1、前往 App Store 下载支持内容脚本管理的扩展,例如 “Content Blocker” 类应用。
2、配置规则以拦截触发 hash 导航的 JavaScript 行为,如匹配 location.hash 相关操作。
Vheer
AI图像处理平台
125 查看详情
3、启用该扩展并在 Safari 设置中允许其运行。
4、刷新目标网页,确认不再发生自动滚动。
三、通过用户脚本注入方式阻止滚动
利用支持用户脚本的 Safari 扩展(如 Userscripts 扩展),可以在页面加载初期执行自定义脚本,屏蔽默认的 hash 锚点滚动行为。
1、安装兼容的用户脚本扩展,并确保已在 Safari 偏好设置中启用。
2、创建一个新的用户脚本,写入以下内容:
if (window.location.hash) {
history.replaceState(null, null, ‘ ‘);
setTimeout(() => { window.scrollTo(0, 0); }, 1);
}
3、保存脚本并刷新需要访问的网页。
4、页面加载后将保持在顶部位置,不会跳转至 hash 锚点。
以上就是safari浏览器如何阻止页面滚动到片段标识符(#hash)位置_safari浏览器阻止网页滚动到hash方法的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/729266.html
微信扫一扫
支付宝扫一扫