javascript拆分在IE9中不起作用 - 更低

时间:2013-12-05 08:33:34

标签: javascript jquery internet-explorer split

我正在使用IE 11来模拟旧版本的IE。以下代码在 IE 9及以下

中无法正常工作
var search_input_val = $.trim($("#search_input").val()).replace(/\s{2,}/g, ' ');
console.log(search_input_val);
var recBox_val_arr = search_input_val.split(/\s+/); // HERE
console.log(recBox_val_arr);

recBox_val_arrundefined的身份登录到控制台。

以上代码在IE 10和11,Firefox,Chrome,Opera和Safari上返回Array。为什么它不能在IE 9及以下版本中运行?

更多详情

鉴于这种情况:

$("#search_input").val() === "ab abc";
search_input_val === "ab abc";

recBox_val_arr被IE≤9记录为undefined,Firefox记录为[object Array],其他浏览器记录为["ab", "abc"]

我通过谷歌的CDN链接到jQuery 1.10.2:

//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js

我也尝试了recBox_val_arr = search_input_val.split(' '),但recBox_val_arr仍然记录为undefined

2 个答案:

答案 0 :(得分:2)

IE 11的IE console.log的实现被破坏

旧的IE实现split确实存在错误,但这不是问题所在。实际上,split工作得很好 - 真正的问题是IE 11在模拟IE 9时被console.log的实施失败:

console.log("test test".split(/\s+/)) // logs "undefined"
"test test".split(/\s+/)              // logs "[object Array]"

Screenshot of IE 11 (emulating IE 9) console output for "test test".split, with and without a call to console.log

就像真的,真的被打败了

更一般地说,模拟IE 9的IE 11中的console.log不支持记录对象或数组:

console.log("foo");         // logs "foo"
console.log({ foo: "bar" }) // logs "undefined"
console.log(["foo"])        // logs "undefined"

Screenshot of IE 11 (emulating IE 9) console.log output for a string, an array and an object

甚至IE 9也不是那么糟糕

最糟糕的是,这与IE 9 实际的行为方式无法相提并论。如果您直接在VM上运行IE 9,这就是您所获得的:

console.log("test test".split(/\s+/)) // logs "test,test"

Screenshot of IE 9 console.log output for "test test".split(/\s+/)

摘要

  • IE 11对IE 9的仿真并不完美。
  • 在IE 11上模拟IE 9时,
  • console.log完全被打开了。
  • 始终使用VM(freely available to download)进行可靠的跨浏览器测试。

答案 1 :(得分:1)

$(document).ready(function(){
$( “按钮”)。点击(函数(){
var search_input_val = $ .trim($(“#search_input”)。val())。replace(/ \ s {2,} / g,'');

的console.log(search_input_val);
var recBox_val_arr = search_input_val.split(/ \ s + /); // - 这里 -
的console.log(recBox_val_arr);
的console.log(recBox_val_arr [0]);
的console.log(recBox_val_arr [1]);
的console.log(recBox_val_arr [2]);
});
});

创建身体 <体>
< input type =“text”id =“search_input”/>
<按钮>提交< /按钮>
< /体>

console.log(recBox_val_arr);

输入=>你好123 hi 输出=> [“你好”,“123”,“hi”]

PHP中的分割功能用于将字符串分解为数组。

的console.log(recBox_val_arr [0]); == 你好
的console.log(recBox_val_arr [1]); == 123
的console.log(recBox_val_arr [2]); == hi

如果你把console.log()放在$(“button”)之外。点击(function(){});那么该值最初将显示为“未定义”。
因为它无法从文本框中获取价值。