当将脚本插入到元素的阴影根目录中时,是否可以引用主机元素?
var element = document.createElement('div'); var script = document.createElement('script'); script.innerHTML = 'console.log(host)'; // << How to get host element?? var shadow = element.createShadowRoot(); shadow.appendChild(script); document.body.appendChild(element);
解决方法
我终于弄清楚了.
根据规范(工作草案),ShadowRoot有一个只读属性称为主机.
http://www.w3.org/TR/shadow-dom/#shadowroot-object
interface ShadowRoot : DocumentFragment { ... readonly attribute Element host; ... };
您可以通过走DOM树来获得阴影根.
while(e.nodeType != 11) { // 11 = DOCUMENT_FRAGMENT_NODE e = e.parentNode; } var hostElement = e.host
在我的情况下,它更简单,因为影子根是脚本本身的父节点.
document.currentScript.parentNode.host