是否有任何Native Javascript函数来检查html标记是否存在?
我的意思是:
var tag = "div";
alert(isValidTag(tag)) // true;
alert(isValidTag("foo")) // false;
如果没有本机功能,我会保留我的功能:
function isValidTag(tagName) {
var tags = ["div","span","a","link" ... "body"];
for(var i=0, len = tags.length; i++ < len; ) {
if(tags[i] == tagName) return true;
}
return false;
}
答案 0 :(得分:5)
没有。 JS根本没有特定的HTML,DOM也不会添加任何类似的内容。
答案 1 :(得分:4)
var tags = new Array;
tags["a"] = true;
tags["b"] = true;
//...
tags["body"] = true;
function isTag(_tag)
{
return tags[_tag];
}
答案 2 :(得分:3)
这个怎么样:
tags = 'a b body...'.split(' ');
function isTag(tag) {
return tags.indexOf(tag.trim().toLowerCase()) > -1;
}
答案 3 :(得分:1)
这可能效率不高,我没有对它进行任何时间试验,但它仍然是一个很好的选择,必须自己维护所有可能值的列表。
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