LoginSignup
24
13

More than 5 years have passed since last update.

ブラウザがサポートしているHTMLタグかどうかをコード上で判定する方法

Last updated at Posted at 2017-06-19
function isUnknownElement(tag){
  var el = document.createElement(tag);
  if (tag.indexOf('-') > -1) {
    return (
      el.constructor === window.HTMLUnknownElement ||
      el.constructor === window.HTMLElement
    );
  } else {
    return /HTMLUnknownElement/.test(el.toString());
  }
}

解説

HTML5から導入されたHTMLUnknownElementを利用してJavaScript上で判定しています。
ハイフンがある場合はカスタムエレメントの関係上、処理を多少変える必要があります。

雑記

普段の開発で使うことがあまりないためか、調べても見つからなかったので投稿しておきます。
自分は、picture要素が含まれるVue.jsを利用したページに対して、picture要素をサポートしていないブラウザでアクセスした場合に、エラーになってしまうのを回避するために用いました。
エラーの内容から、そもそもVue.js側で判定を行っているはずなので、その実装を大いに参考にしました。

(ちなみにVue.js側のバグは既に解決済みですが、まだ反映待ちです。
https://github.com/vuejs/vue/pull/5675

24
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
13