获取影子根主机元素
Get shadow root host element
在元素的影子根中插入脚本时,是否有办法引用宿主元素?
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);
http://jsfiddle.net/9b1vyu4n/Node.getRootNode()
于2016年推出。
你现在可以像这样访问host元素:
element.getRootNode().host
我终于弄明白了。
根据规范(工作草案),ShadowRoot
具有称为host
的只读属性。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
http://jsfiddle.net/9b1vyu4n/2/相关文章:
- CKEditor Widget-阻止编辑可编辑元素本身
- 如何设置html元素填充的动画
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 使用clickToggle并在单击另一个元素时关闭元素
- 单击时将焦点更改为元素
- 表追加而不附加最后一个元素
- 如何在jQuery中获取元素的形式
- 我可以获得相对于被点击元素的确切点击位置吗
- 在函数中添加数组元素的数值
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 将视口底部滚动到元素底部
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 如何使用jquery处理php循环通过元素
- Ckeditor-plugin:插入虚假元素add不情愿<p>标签前后
- chrome扩展更改主机/域警告
- 造型:主机的聚合物元素与Javascript
- 获取影子根主机元素
- JavaScript窗口.元素没有定义,如果主机名在IE上没有'为什么