使用 document.getElementById 将 ShadowDom 中的特定元素暴露给外部 JS

Expose specific element in ShadowDom to external JS using document.getElementById

我有一个 v0/Polymer 1 Web 组件,我正在升级到 v1/Polymer 2。此 Web 组件动态构建一个加载外部 JavaScript 文件的 URI。外部 JavaScript 文件运行并将 <iframe> 加载到我的组件的 <div> 中。此外部 JS 包含 document.getElementById 以将 <iframe> 加载到指定的 <div> 中。

我已经搜索过,但没有找到在 shady DOM 中强制 <div> 元素为 exposed/placed 的方法。我读过如果我设计的组件没有 shadow DOM 什么都不会显示。

我是否可以通过外部脚本(第三方)将其更新为 Web 组件 v1/Polymer2 仍然使用 document.getElementbyId 修改 Web 组件内的 <div>

更新 我发现我可以强制 webcomponents 使用阴影 dom 使用 <script>window.ShadyDOM = { force: true };</script><script src="/bower_components/webcomponentsjs/webcomponents-lite.js" shadydom></script> 但是我仍然无法通过 ID 访问该元素并且我不想强制所有其他 webcomponents 使用阴暗的 DOM。仍在寻找可能性。

我必须做的是在我的 Web 组件模板中放置一个 <slot></slot>。当我声明自定义元素时,我必须像这样在其中嵌套一个 <div><custom-element><div></div></custom-element> 我正在使用 this.appendChild(),其中 this 是自定义元素。我的元素中的 <div> 现在可以被 document.getElementById() 访问,一旦它被分配了 id 属性。