如何在IE678中处理pre的innerHTML,缩进在哪里?

时间:2012-12-24 02:17:39

标签: javascript html internet-explorer

谁能告诉我如何在 IE678 中处理pre的innerHTML? 我知道使用br,但如何处理缩进?

我的 HTML

<div id="box">
    <pre id="code">

       var a = "before";
       function b(){
           alert(a);
       }

    </pre>
</div>

我的 JS

<script>
    var pre = document.getElementById("code");
    var str = pre.innerHTML;
    var newstr = str.replace("before", "after").replace(/\n/ig, "<br />");
    pre.innerHTML = newstr;
</script>

页右:结果

var a = "after";
function b(){
    alert(a);    //note the indentation before alert 
}

IE678 页面中的结果错误:

var a = "after"; 
function b(){ 
alert(a);        //indentation is disappeared......
}

1 个答案:

答案 0 :(得分:0)

抱歉,没有看到你用JavaScript搞砸了pre的文本。您可以这样做:

    var pre = document.getElementById("code");
    var str = (pre.innerText) ? pre.innerText : pre.textContent;
    var newstr = str.replace("before", "after");//.replace(/\n/ig, "<br />");
    if(pre.textContent){pre.textContent = newstr};
    if(pre.innerText){pre.innerText = newstr};