【问题标题】:2 Shadow DOMs in one HTML page一个 HTML 页面中的 2 个 Shadow DOM
【发布时间】:2019-02-10 12:38:18
【问题描述】:

我想在一个 Angular 应用中创建/注入/设置两个 Shadow DOM,每个应用同时包含 CSS 和 js。

对于 CSS - 我知道如何隔离它。

对于 js - 我与变量和函数名称发生冲突。

有什么想法吗?

index.html:

index2.html

  1. 我创建 HTTP 请求是为了获取 HTML 文件(使用 CSS 和 js)。
  2. 为每个创建一个阴影线
  3. 将文件附加到影子 dom
  4. 我收到此错误

错误:

【问题讨论】:

  • 欢迎来到 StackOverflow!你能告诉我们你所做的代码吗?会更容易回答。
  • 您可以将 x 的声明封装在 try/catch 中。
  • 或者使用require 和构建工具的现代方法...
  • @Supersharp 可以这样想——我将从另一个团队获得这些文件(带有 CSS 和 js 的 HTML)。我不能强迫他们。它可能是。 (用于变量和函数)
  • @RokoC.Buljan 嗨,你有例子吗?

标签: javascript shadow-dom


【解决方案1】:

ShadowDOM 为 DOM 和 CSS 创建沙箱,但不为代码创建沙箱。

JS 代码,无论是使用<script src="filename"></script> 还是<script>code</script> 加载,都被放置在单个命名空间中。

如果您需要防止代码踩到其他代码,请尝试以下操作:

(function () {
  // your code
})()

这会加载函数并创建一个新作用域,将所有代码都放在该作用域中。

这允许您创建封装在可重用的类中的代码块。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-16
    • 2018-02-24
    • 1970-01-01
    • 1970-01-01
    • 2018-04-21
    • 2018-08-11
    • 2017-04-08
    • 2015-05-09
    相关资源
    最近更新 更多