0

次のような関数を作成したいと思います。

function supportsElem(tagName) {
   // returns boolean
}

どこ:

supportsElem("div") // true 
supportsElem("randomtext") // false

それを行う最も簡単な方法は何ですか?

4

4 に答える 4

1

これを試して:

function testTag(tagname) {
    return document.createElement(tagname) instanceof HTMLUnknownElement;
}

ただし、この ( ) がどのようなブラウザをサポートするかはわかりませんHTMLUnknownElement

于 2012-04-06T19:56:49.273 に答える
1

これは価値以上の努力です。

すべての有効なタグの辞書を保管してください (オンラインで簡単に見つけることができます)。基本的に文字列の配列

それならただ

var dictionary = ["div", "a", "input", "span", ..., "td"];
var myTag = "div";
dictionary.indexOf(myTag); // if this doesn't return -1, then the tag is valid
于 2012-04-06T19:56:52.963 に答える
1

私はこれを気にする必要がなかったので、ただの推測です。しかし、要素を作成してから、それが正常に動作することを確認できるように思えます。たとえば、特定のプロパティがあること、またはそのコンストラクターが正しいこと (または、少なくとも、サポートされていない一般的な要素が持つものと同じではないこと) です。

コンストラクター チェックの例 (未テスト):

// pick a name that'll never be an element 
var generic_element = document.createElement('randomtext');

var tagName_to_check = document.createElement('div');
if (tagName_to_check.constructor === generic_element.constructor) {
    // the browser treats the node as a generic element, rather than
    // (eg) a DivElement
    // so it's probably unsupported
}
于 2012-04-06T19:55:42.597 に答える
0

単純に要素を作成してから、この要素に固有のメソッドに対してテストすることができます。

于 2012-04-06T19:50:57.163 に答える