0

我想做一个函数,效果如下:

function supportsElem(tagName) {
   // returns boolean
}

在哪里:

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

最简单的方法是什么?

4

4 回答 4

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 回答
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 回答
0

您可以简单地创建元素,然后针对特定于该元素的方法对其进行测试。

于 2012-04-06T19:50:57.163 回答