【发布时间】:2018-11-15 23:23:34
【问题描述】:
我正在为基本的可重用控件(例如按钮、菜单、数据表等)开发自定义元素。我知道浏览器对自定义元素和影子 DOM 的支持,但我做得很好一般可用的 polyfill。
对于一些自定义元素,我使用第三方脚本来提供额外功能,但有时当他们必须以某种方式操作 DOM 时,它们无法按预期工作。
每次外部脚本想要按类或 id 搜索元素时都会发生这种情况。显然是调用
document.getElementById (id)
或
document.getElementsByClassName (class)
不起作用,因为在全局 DOM 中找不到具有 id 或类的元素,但在影子 DOM 中。
据我所知,您不能在 javascript 中给文档变量一个新的引用。
那么,在不解析整个脚本并重写它以使其在影子 DOM 上下文中可用的情况下,是否有解决此问题的方法?
编辑: 这不是关于从一般的影子 DOM 中获取元素,而是如何使用不知道他们必须在调用它们的影子 DOM 中而不是在主 DOM 中搜索的第 3 方脚本。正如 CBroe 在 cmets 中指出的那样。
【问题讨论】:
-
@Protozoid 并不是真正的重复恕我直言;那里是关于如何使用专门为此目的编写的代码访问 shadow DOM 中的元素,但这里的问题主要是如何处理没有考虑“shadow DOM 能力”编写的第 3 方脚本。
-
@CBroe Fair ...也许这个讨论会有所帮助stackoverflow.com/questions/45917672/…这表明在需要第三方库可插入性时,ShadowDOM 不是合适的方法
-
@Protozoid 是的,我可以同意这一点。 shadow DOM 的主要目的之一是 与“其余部分”隔离,因此使用 3rd-party 库进行填充可能会破坏一开始的重点。
-
您尝试使用哪些第 3 方脚本? stackoverflow.com/questions/50698021/…
标签: javascript shadow-dom custom-element