1

我如何制作一个不会破坏的 div,即使其中的信息结构制作不当。

IE:

<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 并不理想。

感谢您阅读

4

2 回答 2

2

iframe 是唯一能够将内容与周围页面隔离开来的 100% 防弹容器。

于 2012-11-27T15:12:38.790 回答
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> 
于 2012-11-27T15:15:40.807 回答