shadow Dom(shadowRoot) 访问

示例

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");

 

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

转载于:https://www.cnblogs.com/zihunqingxin/p/5040504.html

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值