嘛,最近在各种直接拿代码调试,发现的问题可能稍微多了一点,姑且都记下来,这个随笔以后可能会不定期更新,因为相信不同浏览器之间各种差异还是很多的。
直接上代码
1 <html> 2 <head> 3 </head> 4 5 <body> 6 <script> 7 var str = "/part1/part2"; 8 var _list = str.split(/[\\/]/); 9 for(var i = 0; i < _list.length; i++) 10 { 11 var t = "_list[" + i + "] : " + "\‘" + _list[i] + "\‘"; 12 alert(t); 13 } 14 </script> 15 </body> 16 </html>
分别打开ff、chrome和IE8查看效果,发现结果是不同的
其中ff和chrome结果一样,是
[0] => ‘‘
[1] => ‘part1‘
[2] => ‘part2‘
而IE8则是
[0] => ‘part1‘
[1] => ‘part2‘
所以如果通过索引来使用_list的话,自然浏览器之间就会出现不同的结果了
换一组代码,注意 var str = 的这行代码不同了
1 <html> 2 <head> 3 </head> 4 5 <body> 6 <script> 7 var str = "part1/part2/"; 8 var _list = str.split(/[\\/]/); 9 for(var i = 0; i < _list.length; i++) 10 { 11 var t = "_list[" + i + "] : " + "\‘" + _list[i] + "\‘"; 12 alert(t); 13 } 14 </script> 15 </body> 16 </html>
ff与chrome表现仍然一致,
[0] => ‘part1‘
[1] => ‘part2‘
[2] => ‘‘
而IE8为
[0] => ‘part1‘
[1] => ‘part2‘
往后的例子就不再举了,但是可以发现的一个规律是,IE8把分割出来之后的空字符串都给吞了。。。这简直让人无语。。。
但是不使用正则表达式时,IE8却又没有问题了,注意 var _list = str.split("/"); 而不是正则 var _list = str.split(/[\\/]/);
<html> <head> </head> <body> <script> var str = "part1//part2/"; var _list = str.split("/"); for(var i = 0; i < _list.length; i++) { var t = "_list[" + i + "] : " + "\‘" + _list[i] + "\‘"; alert(t); } </script> </body> </html>
嗯,IE8又满血复活了。。。
不同浏览器下js的字符串split方法的差异
时间: 2024-10-24 12:46:27