[英]Check if string is valid html tag.
是否有任何本機 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;
}
沒有。JS 根本沒有任何特定於 HTML 的東西,DOM 也沒有添加任何類似的東西。
這個怎么樣:
tags = 'a b body...'.split(' ');
function isTag(tag) {
return tags.indexOf(tag.trim().toLowerCase()) > -1;
}
var tags = {a: true, b: true, /*...,*/ body: true};
function isTag(_tag)
{
return tags[_tag];
}
謝謝@rsp,建議進行這種簡化
這可能效率不高,我還沒有對它進行過任何時間試驗,但它仍然是一個很好的替代方法,而不是必須自己維護一個包含所有可能值的列表。
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.