Array.prototype.join在IE 8中不起作用

时间:2014-12-05 07:58:57

标签: javascript internet-explorer internet-explorer-8

我在我的工作场景中使用了如下所示的代码片段。它在IE的最新版本中运行良好,但是联接功能在IE 8版本中不起作用。

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
    </head>
    <body>
        <script type="text/javascript">
            var str = "TEST\n";
            var lines = str.split(/\r?\n/).join("\r\n");
            debugger;        
        </script>
   </body>
</html>

如何解决此问题?在此先感谢。

1 个答案:

答案 0 :(得分:0)

您的特定示例中的问题宁愿是split()函数,而不是join()split()在JScript 6(IE8)和后来的JScript版本之间的行为不同,因为如果分隔符实际结束或开始字符串,则结果数组的长度不同。在这种情况下,<null>项被删除,意思是:

  

JScript 6:
  &#34; TEST \ n&#34; .split(&#34; \ n&#34;)。长度等于1

     

JScript 6+:
  &#34; TEST \ n&#34; .split(&#34; \ n&#34;)。长度等于2

同样,在您的示例中,这意味着IE8中的join()是在仅包含一个元素的数组上执行的。

相反,如果你使用replace() - 这似乎是一个更好的选择 - 你可以克服这个问题,即str.replace(/\r?\n/g, "\r\n")