【问题标题】:javascript split not working in IE9 - lowerjavascript split 在 IE9 中不起作用 - 较低
【发布时间】:2013-12-05 08:33:33
【问题描述】:

我正在使用 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"]

我正在通过 Google 的 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

【问题讨论】:

  • 您能否使用适用于所有其他浏览器的值发布您的 console.log 调用的输出?
  • 你用的是什么版本的jQuery? 2.0版本不支持
  • 阅读this
  • @JordanGray 发现 split 确实有效,当我尝试调用索引时,我的问题不是这样,例如recBox_val_arr[0]。 ie9 确实支持它,但是当你 console.log 时它返回的数组是 undefined 顺便说一句真的很误导。
  • Right here。绝对是在旧版本中测试的最佳方式! :)

标签: javascript jquery internet-explorer split


【解决方案1】:

IE 11 对 IE 9 的 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]"

真的,真的破灭了

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

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

即使 IE 9 也没有这么糟糕

最糟糕的是,这甚至无法与 IE 9 实际的行为方式相提并论。如果您直接在 VM 上运行 IE 9,您会得到以下结果:

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

总结

  • IE 11 对 IE 9 的仿真并不完美。
  • 在模拟 IE 9 的 IE 11 上调用 console.log 时,完全是无聊的。
  • 始终使用虚拟机 (freely available to download) 进行可靠的跨浏览器测试。

【讨论】:

    【解决方案2】:

    $(document).ready(function(){
    $("按钮").click(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]);
    });
    });
    使用
    创建正文

    提交按钮>

    猜你喜欢
    • 1970-01-01
    • 2012-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-27
    • 1970-01-01
    • 2014-11-19
    相关资源
    最近更新 更多