即使内部信息的结构不正确,我如何制作一个不会破坏的div。
即:
<div id="bulletproof_div">
<div> </div>
<div> </div>
<div id="unclosed_div">
</div>
<div id="normally_this_one_would_break">
</div>
编辑:上下文是它是一个邮件系统,我无法控制发送给我的信息,这就是为什么我需要这样做以便网站不会破坏。
我已成功尝试使用iframe,但我需要能够修改div的内部html,因此iframe不理想。
感谢您阅读
答案 0 :(得分:2)
iframe是唯一可以隔离周围页面内容的100%防弹容器。
答案 1 :(得分:2)
如果您在将“标记”附加到“bulletproof_div”之前有权访问该标记,则可以使用此功能在添加标记之前“修复”标记
function cleanMarkup(markupStr) {
// temp 'div' only used as a container, it is not returned with output
var temp = document.createElement("div");
temp.innerHTML = markupStr;
return temp.innerHTML;
}
大多数浏览器都会尝试修复损坏的标记,因此在设置后立即检索innerHTML
属性时,该值将是一个“固定”标记字符串。
所以给出了这个输入
cleanMarkup("<div></div> <div id='unclosed'>test!")
该功能应该返回
<div></div> <div id="unclosed">test!</div>