首页 > 代码库 > 不同浏览器下js的字符串split方法的差异

不同浏览器下js的字符串split方法的差异

嘛,最近在各种直接拿代码调试,发现的问题可能稍微多了一点,姑且都记下来,这个随笔以后可能会不定期更新,因为相信不同浏览器之间各种差异还是很多的。

 

直接上代码

 

 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又满血复活了。。。