首页 > 代码库 > 不同浏览器下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又满血复活了。。。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。