これはそれほど効率的ではないかもしれません、私はそれについてタイムトライアルをしていませんが、それでもすべての可能な値のリストを自分で維持しなければならない代わりに良い代替手段になる可能性があります。
var isHTML = (function() {
var unknown = '[object HTMLUnknownElement]', overrides = {CANVAS:1,VIDEO:1}; //html5 elements. Some browsers don't support these.
return function(tag) {
return overrides[tag = tag.toUpperCase()] || (!overrides.hasOwnProperty(tag) && (overrides[tag] = (document.createElement(tag).toString() !== unknown)));
};
})();
このメソッドは、最初にキャッシュされた結果をチェックし、結果がない場合は、ブラウザ自体に基づいて結果を決定しdocument.createElement
ます。ブラウザがサポートしていない場合は、htmlタグではないと安全に推測できます。
いくつかのサンプル出力:
isHTML('curve'); //false
isHTML('div'); //true
isHTML('DIV'); //true
isHTML('tbody'); //true
isHTML('object'); //true
isHTML('document'); //false
isHTML('html'); //true
isHTML('svg'); //false
isHTML('rect'); //false