在概念上,Shadow DOM 最費神的地方,就是瀏覽器如何轉譯最終產品 (DOM)。主機節點的節點會神奇地轉換為 ShadowRoot 的插入點,但在邏輯上仍會保留在主機節點中。真奇怪!因此在轉譯期間,這些元素會顯示為陰影樹的一部分,而非原始主機。這項轉譯作業的執行方式,是 Shadow DOM 最令人困惑的部分之一。
幾天前,我發布了一直在研究的工具,名為「Shadow DOM Visualizer」,可縮短學習曲線。
這項功能可讓您以視覺化方式查看 Shadow DOM 在瀏覽器中的轉譯方式,這也是目前 DevTools 缺少的功能。左側的黑色程式碼區塊皆可編輯。請嘗試變更 <content> 插入點、移除或新增新的插入點,看看會如何影響右側的組合 (算繪) 樹狀結構。
將滑鼠游標懸停在圖表中的節點上,即可在左側醒目顯示相關標記。d3.js 真棒!藍色節點來自主機節點。黃色節點來自 Shadow DOM。<content> 插入點是兩個世界的橋樑。由於這些元素在邏輯上位於 Shadow DOM 中,因此會以黃色標示。藍色邊框表示邀請藍色主機節點加入轉譯群組。