3

我需要一个“拆分”功能,它在从 8 开始的每个 IE 版本上都将以相同的方式工作(是的,只有 IE,因为这是用于使用WebBrowser控件的应用程序)。以下代码将在 IE 8 上警告“2”,在 IE 9+ 上警告“3”:

var step1_slices = "One.Two.".split(new RegExp("\\.", "g"));
alert(step1_slices.length);

我是第一个遇到这个问题的人还是有已知的解决方案?

4

1 回答 1

2

我是第一个遇到这个问题的人吗

不,当分隔符位于字符串的开头或结尾时,较旧的浏览器会以不同的方式实现拆分。有些在两端保留空字符串,有些保留最后一个,有些像 IE,只保留空匹配,如果它们在字符串的主体中。现代浏览器都保留了两个外来者。

解释任何差异的最简单方法是让 IE9+ 像 IE8- 一样查看数组的第一个和最后一个元素,如果它们未定义或为空字符串,则将其删除。

String.prototype.split8=function(delim){
  var A=this.split(delim);
  if(!A[0])A.shift();
  if(!A[A.length-1)A.pop();
  return A;
}
于 2013-04-16T02:28:47.370 回答