0

谁能告诉我如何处理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......
}
4

1 回答 1

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};
于 2012-12-24T02:44:14.120 回答