是否可以防止导入的 javascript 代码修改我的 dom
Is it possible to prevent imported javascript code from modifying my dom
我想做的是让其他人能够编写他们自己的逻辑来呈现我给他们的某些 div 元素的内容。这是一个 space 他们可以自由添加 DOM 元素,使用他们自己的 CSS 进行自定义,并设计他们想要的样子。
然而,当我这样做时,我 运行 遇到了 CSS 冲突和 Javascript 全局变量冲突的问题。我遇到了 shadow DOM,这是否是用于此用例的正确技术?如果是这样,您如何防止其他人选择 DOM 影子 DOM 之外的元素?例如,如果他们使用 jquery 执行 $('body') 之类的操作并开始更改它。
还需要考虑的另一件事是,人们将在这个给定的 div 元素中呈现的内容依赖于从我的 Web 应用程序获取数据。一个很好的例子可能是数据流和一些未知类型的图表,它们可能由其他人设计以显示实时数据。
使用 iframe
沙箱。您有多种选择来禁止脚本或让页面表现得像在另一个域上一样。您可以在此处找到所有选项:http://www.w3schools.com/tags/att_iframe_sandbox.asp
您的用例示例如下:
<iframe sandbox="allow-scripts" src="anotherpage.html"></iframe>
如果您不想将 iframe
与 sandbox
属性一起使用,则排序答案为 NO。这是不可能的。
JavaScript 在 window 中运行,并且可以完全访问 window 中的文档。您可以尝试修改一些功能,但没有办法以正确的方式进行。
只需为此使用 iframe。
我想做的是让其他人能够编写他们自己的逻辑来呈现我给他们的某些 div 元素的内容。这是一个 space 他们可以自由添加 DOM 元素,使用他们自己的 CSS 进行自定义,并设计他们想要的样子。
然而,当我这样做时,我 运行 遇到了 CSS 冲突和 Javascript 全局变量冲突的问题。我遇到了 shadow DOM,这是否是用于此用例的正确技术?如果是这样,您如何防止其他人选择 DOM 影子 DOM 之外的元素?例如,如果他们使用 jquery 执行 $('body') 之类的操作并开始更改它。
还需要考虑的另一件事是,人们将在这个给定的 div 元素中呈现的内容依赖于从我的 Web 应用程序获取数据。一个很好的例子可能是数据流和一些未知类型的图表,它们可能由其他人设计以显示实时数据。
使用 iframe
沙箱。您有多种选择来禁止脚本或让页面表现得像在另一个域上一样。您可以在此处找到所有选项:http://www.w3schools.com/tags/att_iframe_sandbox.asp
您的用例示例如下:
<iframe sandbox="allow-scripts" src="anotherpage.html"></iframe>
如果您不想将 iframe
与 sandbox
属性一起使用,则排序答案为 NO。这是不可能的。
JavaScript 在 window 中运行,并且可以完全访问 window 中的文档。您可以尝试修改一些功能,但没有办法以正确的方式进行。
只需为此使用 iframe。