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

 

后來想想,其實以前隱約在哪見到過這功能,但因為一真沒有用,淡忘了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM