【发布时间】:2018-11-07 14:06:21
【问题描述】:
我正在使用 Polymer 当前的 PWA 入门套件模板。
https://github.com/Polymer/pwa-starter-kit/tree/template-typescript
我的 web-component 元素页面返回以下带有 DIV 元素的代码:
return html`
${SharedStyles}
<section>
...my content...
</section>
<div id="CONTAINER NAME"></div>
`
我需要通过 document.getElementById 从外部 javascript 访问 CONTAINER NAME 元素。我知道它位于 shadow dom 中,但我无法更改外部 JS。那么问题是如何通过 document.getElementById 从 JS 访问它?
外部 JavaScript 将 iframe 加载到命名的 div 中。这个外部组件需要通过document.getElementById获取div元素才能将iframe加载到指定的div中。
我已经搜索并没有找到一种方法来强制将我的 web 组件页面的 shadow dom 中的 div 元素暴露/放置在 DOM 中。
我刚刚发现这里提到的这个解决方案,但我没有让它在 PWA 模板中工作。可能是因为 shadow dom 在 PWA 模板中级联?
有什么方法可以更新基于 Polymer v3/PWA 套件的 Web 组件,外部 javascript(第三方)仍然使用 document.getElementbyId 来修改我在 Web 组件中的 div?
所以寻找一种可能使用slots 将shadow dom 的元素暴露给light dom 的可能性?但不能让它与上面链接的解决方案一起工作。
【问题讨论】:
标签: polymer web-component shadow-dom pwa-starter-kit