SO 网站似乎使用 iframe 来运行代码片段。任何形式的 Web 组件都可以接受用户提供的 JavScript 并仅在影子 DOM 中独立运行吗?
我通过附加脚本标签尝试了简单的影子 DOM 和自定义元素示例,并且该脚本可以在这两个实例中更改影子 DOM 之外的 DOM。有没有办法隔离JS?
这个几乎十年前的答案说不,但想知道是否有什么变化。这个八年前的答案似乎暗示Web组件可以隔离JS,但它不是很清楚,至少对我来说不是。
也许,如果可能的话,SO 和 W3schools 会使用它们而不是 iframe。
谢谢你。
不,shadow DOM 是一种不相关的隔离类型。即使无法以某种方式干扰页面上的其他脚本或访问 DOM 的其余部分,该脚本仍将在同一源上运行,因此对于不受信任的代码来说是完全不安全的 – 能够发出任意同源请求例如,带有凭据。