检查字符串是否为有效的html标记
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 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
var tags = {a: true, b: true, /*...,*/ body: true};
function isTag(_tag)
{
return tags[_tag];
}
感谢@rsp建议简化
相关文章:
- 制作一个不带HTML a标记但在动画播放完毕后指向其他页面的超链接
- HTML标记在脚本标记中工作
- 是否可以添加这行“;“照原样”;在HTML标记中
- 一个正则表达式,用于从JS中的HTML标记中删除id、样式和类属性
- 如果匹配项在特定的html标记中,则跳过regex匹配
- 使用 Pure JS 更改 HTML 标记名称
- 如何使用javascript选择字符串的部分,添加html标记或删除部分
- HTML标记,包含带引号的JavaScript代码中的引号
- 如何在JavaScript中创建打字机效果,这将考虑html标记规则
- 将c#视图模型转换为javascript模型时转义HTML标记
- Regex剥离具有特定属性的html标记
- 如何在不创建格式错误的HTML标记的情况下分解字符串
- HTML 标记未在 AngularJS ckEditor 中应用,而是在 Ediator 中显示 HTML 元素标记代码
- 如何在angularJS中运行for循环而不使用html标记
- Riot 每个构建 HTML 标记
- 用HTML标记+ 替换关闭的HTML标记
- 存储包含html标记的文本
- Regex以转义HTML标记
- 在html标记中序列化javascript代码
- JS来显示HTML标记