javascript - pre 中的代码在 IE8 上排成一行

标签 javascript jquery html internet-explorer-8 pre

我试图从 textarea 中获取值并将其放入 pre 标签 中,它在 chrome 和 mozilla 上工作正常,但在 IE8 上整个内容在 pre 标签

中停留在一行

jsbin 链接:http://jsbin.com/uwunug/4/edit

这就是全部:

<html><head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>

</head>
<body>
<script type='text/javascript'>
$(function(){

$('#b1').click(function(){
x = $('textarea').val();
$('#tt').html(htmlEscape(x));    
});

});
function htmlEscape(str) {
    return String(str)
            .replace(/&/g, '&amp;')
            .replace(/"/g, '&quot;')
            .replace(/'/g, '&#39;')
            .replace(/</g, '&lt;')            
            .replace(/>/g, '&gt;');
}
</script>


 <textarea cols='50' rows='20'>
 </textarea>
 <button id='b1'>make code</button>
 <pre class="prettyprint" id='tt'>
</pre>

</body>
</html>

我注意到(通过将 \n 替换为“输入”)\n 字符进入了 pre 但它们不会在那里产生新行

最佳答案

atm 我的解决方案是在末尾添加这一行:

.replace(/\n/g, '<br\>')

在我的htmlEscape中,是这样的:

function htmlEscape(str) {
    return String(str)
            .replace(/&/g, '&amp;')
            .replace(/"/g, '&quot;')
            .replace(/'/g, '&#39;')         
            .replace(/</g, '&lt;')                      
            .replace(/>/g, '&gt;')
        .replace(/\n/g, '<br\>');
}

如果你知道更好的答案,请发表你的答案

关于javascript - pre 中的代码在 IE8 上排成一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7445502/

相关文章:

html - 悬停时出现 Div

javascript - AngularJS Controller 等待响应(或设置回调)

javascript - 如何根据返回值重定向用户

javascript - 如何从异步调用返回响应?

javascript - 在 jQuery 中使用 sprintf

javascript - 当 page.html 位于另一个文件夹中时,幻灯片菜单停止工作

html - Chrome 为主体添加了不需要的边距

javascript - 使用异步存储的正确/正确方法是什么?

javascript - 如何让我的机器人等待提到的用户 discord.js 的回复?

javascript - 如何摆脱未定义?