我需要一个“拆分”功能,它将在从8开始的每个IE版本上以相同的方式工作(是的,只有IE,因为这是针对使用WebBrowser控件的应用程序)。以下代码将在IE 8上警告“2”,在IE 9 +上警告“3”:
var step1_slices = "One.Two.".split(new RegExp("\\.", "g"));
alert(step1_slices.length);
我是第一个遇到这个问题的人还是有一个已知的解决方案?
答案 0 :(得分: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;
}