码迷,mamicode.com
首页 > 其他好文 > 详细

shadow Dom(shadowRoot) 访问

时间:2015-12-12 00:04:54      阅读:2862      评论:0      收藏:0      [点我收藏+]

标签:

示例

gtx.shadowRoot.getElementById("translation")

gtx为host对象

 

起因

 

抓去chorome谷歌翻译插架的内容。有信息的内容div id是"bubble-content"

var contend=document.getElementById("bubble-content")

contend是null ? ! !怎么会是null?我又没拼错。

这不科学,然后发现这个div 外层有个#shadow-root (open)

没见过的东西

事不为常便有妖,问题8成就在这里

 

查了相关资料后确定

 

简而言之shadow-root 包裹下的对象,不在全局的dom树中,因此getElementById 等方法,获取不到包裹中的对象。

该功能的目的就是,独立出一块渲染块,不受外层样式的影响,内层的样式也不影响外层的显示。

 

访问方式为

1得到shadow-root 外层的根node 这个node是在全局dom树中的。

var gtx=document.getElementById("gtx-host")

2取得gtx的shadow块

gtx.shadowRoot

3之后再怎么操作就随意了

比如取shadow块中的节点。

var truecontent=gtx.shadowRoot.getElementById("translation");

 

后来想想,其实以前隐约在哪见到过这功能,但因为一真没有用,淡忘了

shadow Dom(shadowRoot) 访问

标签:

原文地址:http://www.cnblogs.com/zihunqingxin/p/5040504.html

(1)
(1)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!