当使用 sherpa 等第三方 sdk 动态挂载嵌入式元素(如地图组件)时,浏览器(尤其是 chrome/edge)常因自动聚焦或内部 scrollintoview 行为导致页面跳转至该元素位置——firefox 因行为差异暂不复现。本文提供根本性解决方案:用 iframe 隔离第三方脚本,彻底阻断其对主文档滚动的干扰。
该问题的本质并非前端逻辑错误,而是第三方 SDK(如 Sherpa Widget)在 mount() 过程中主动调用了滚动相关 API(例如 element.focus()、scrollIntoView() 或 window.scrollTo()),且这些调用发生在 DOM 就绪后、用户无感知的时机。值得注意的是:
✅ 推荐方案:使用沙箱化 iframe 封装第三方组件
将 Sherpa 组件完全隔离在独立上下文中,使其无法访问父页面 window、document 或触发主文档滚动:
What
some content...
新建 sherpa-embed.html(同域下):
Sherpa Embed
⚠️ 关键注意事项

? 延伸建议
若 iframe 方案受限(如 SEO 或样式穿透需求),可尝试临时禁用滚动检测(仅作临时缓解):
// 在主页面 document.head 中注入(早于 widget.js 加载)
const style = document.createElement('style');
style.textContent = `
* { scroll-behavior: auto !important; }
html { scroll-behavior: auto !important; }
`;
document.head.appendChild(style);但此法治标不治本,仍可能被 SDK 内联样式或 JS 覆盖。iframe 是目前最稳定、符合 Web 标准的隔离方案。