【问题标题】:How can I find out whether a HTML-Tagname is Standalone如何确定 HTML 标记名是否是独立的
【发布时间】:2014-10-13 14:20:15
【问题描述】:

有没有办法找出 HTML-tagName 是成对出现还是单独出现(Standalone-Tag)? 例如。 <div></div>, <em></em>, <p></p>, ... 它们成对出现,但 <br/>, <input>, <area> ... 是独立的。

我需要一个函数来判断 HTML 代码 sn-p 是否输入正确。因此,该函数必须调查可以使用 Standalone-Tag 创建哪些 HTML-Element。 您知道如何确定 HTML 元素是否是独立的吗?除了例如 像这样:

var myArray = [ list of Standalone-Tags ];
if(jQuery.inArray("test", myArray) != -1 ) { ... }

谢谢。

【问题讨论】:

  • $("<div></div>").html("<div>").html() vs $("<div></div>").html("<br>").html();但理想情况下,您应该从 W3.org 获取规格。
  • 你如何定义“正确”? Any string is HTML,所以如果你想清理它,只需将其转储到文档片段中,让浏览器完成繁重的工作。
  • @zzzzBov:谢谢,但是检查了链接的语法,而不是“独立标签”。

标签: javascript jquery html css


【解决方案1】:

浏览器没有定义为空的内置元素列表。

您最可靠的选择是通过阅读 HTML 规范手动创建一个。

或者,您可以创建一个元素并查看将其转换为 HTML 时浏览器返回的内容。

var element = prompt("What element name? e.g. br");
var container = document.createElement('div');
var content = document.createElement(element);
container.appendChild(content);
var reg = new RegExp("/" + element);
alert(reg.test(container.innerHTML) ? "Not Empty" : "Empty");

【讨论】:

  • 但这确实是一个优雅而聪明的解决方案 :) 正是我想要的,谢谢。
  • 关于浏览器真正将什么视为“独立”标签的替代方法更可靠,因为它们可能很好地支持非标准 void 元素(并且可能不支持标准 void 元素,对于“标准”)。
猜你喜欢
  • 2011-04-08
  • 1970-01-01
  • 2019-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多