html编译的时候会自动补齐尾部标签吗,javascript – 为自动关闭标签添加尾部斜杠的字符串处理(IMG,BR等)...

如果我得到一个元素的innerHTML,某些子元素应该有一个尾部斜杠是有效的XHTML(例如,“< br />”),但它们不会在Chrome,Firefox或IE中,不管doctype.

显然这在大多数情况下并不重要,但在我的情况下,我正在使用来自DOM的html来作为模板系统的一部分 – 所以如果缺少那些反斜杠,它们会以这种方式进入使用这些构建的结果页面模板,因为这个页面将不会验证为XHTML.非验证页面似乎让我的客户感到难过.

所以……我正在寻找一些javascript代码(也许是一个正则表达式),它会在适当的地方添加反斜杠.如果它适用于这些对我来说足够好的元素类型:

区域,基地,br,col,嵌入,hr,img,输入,链接,元,param

我想如果有一个>那就不要混淆了.在标签内的引​​号中.

我知道有一个dom-to-xml库(http://xhtmljs.codeplex.com/)可以做到这一点,但它也做了很多其他的事情并且是非常强力的.我希望有一些更简单的东西.

编辑:

好吧,因为我没有对字符串处理方法有任何影响,所以我继续为我做了一些可以解决问题的方法. (虽然它会被引号中的>混淆,我将在稍后处理):

var addClosingSlashes = function (htmlString) {

var elemTypes = [

"area", "base", "br", "col", "embed", "hr", "img", "input", "link", "meta", "param"];

var inString, outString = htmlString;

for (var i=0; i

var index1 = 0, index2;

inString = outString;

outString = '';

while ((index1 = inString.indexOf("

if ((index2 = inString.indexOf(">", index1)) != -1 && inString.substring(index2 - 1, index2 + 1) != '/>') {

outString += inString.substring(0, index2) + " />";

inString = inString.substring(index2+1);

}

else {

break;

}

}

outString += inString;

}

return outString;

};

解决方法:

除非这是服务器端的JavaScript,否则这不会做任何事情.当浏览器执行javascript时,DOM被构建为DOM,而不是某种文本元素.也就是说,元素已经被构建到树中,并且您无法做更多的事情来影响渲染.

标签:javascript,regex

来源: https://codeday.me/bug/20190704/1380341.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值