簡體   English   中英

如何檢查元素是否可以托管 Shadow DOM?

[英]How can i check whether an element can host Shadow DOM?

此處指定允許 Shadow DOM 的元素: https : //docs.w3cub.com/dom/element/attachshadow/

如何驗證元素是否支持 Shadow DOM?

if (myElement.attachShadow) {
    ...
}

似乎不起作用。

如果不受支持,您可以嘗試捕獲。

try {
   let shadowRoot = elem.attachShadow( { mode: "open" } );
   shadowRoot.innerHTML = ...;
   return true;
} catch( err ) {
   return false;
}

你也可以把它變成一個幫助器,但是如果你需要多次使用它,那么在檢查每個元素之后存儲結果可能是一個好主意。

 function canAttachShadow( elem ) { try { elem.cloneNode().attachShadow( { mode: "open" } ); return true; } catch( err ) { return false; } } console.log( "a", canAttachShadow( document.createElement( "a" ) ) ); console.log( "article", canAttachShadow( document.createElement( "article" ) ) );

如果你真的願意,你也可以使用規范算法,它是有效自定義元素名稱和文章中白名單的組合(即今天, “文章”、“旁白”、“塊引用”、“正文” ", "div", "footer", "h1", "h2", "h3", "h4", "h5", "h6", "header", "main", "nav", "p", "section" 或 "span" ),但是此白名單將來可能會更改,因此任何使用它的代碼都需要隨規范一起更新。

你可以嘗試這樣做:

if (document.myElement.createShadowRoot || document.myElement.attachShadow) {
    // support shadow DOM
} else {
    // not support
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM