1

我遇到了一个以前从未见过的 jQuery 问题。我的脚本隐藏了某些包装器,这适用于 Firefox 和 Chrome,但不适用于 IE。奇怪的是,当我打开 IE 控制台并刷新页面以查看日志时,它也可以正常工作。它仅在打开开发人员工具刷新时修复!

这是一个控制台片段:

$.get('/help-and-advice/purchase-wizard/product-details/' + product_id, function(data) {

          console.log(data);

          $.each(data.show, function() {
            $.each(this, function(index) {
              $('#' + data.show[index]).show();
            });
          });

          $.each(data.hide, function() {
            $.each(this, function(index) {
              $('#' + data.hide[index]).hide();
            });
          });

在控制台日志中,我想要隐藏的包装器也列在 data.show 对象中。

4

1 回答 1

2

当存在控制台语句且控制台未打开时,IE 失败

将其更改为

window.console && console.log(...)

或将其注释掉或记得在测试前按 F12


我有这个jsfiddle

简单版:

if (!window.console) window.console={ log:function(str) { alert(str) } }

处理逗号分隔参数的更复杂的版本 - 它不会解包对象,但可以处理一层复杂性

if (!window.console) 
  window.console={ log:function() { 
    var text = [];
    for (var a,i=0;i<arguments.length;i++) {
      a=arguments[i];
      text.push(typeof a+": "+(typeof a == "object" ? a.toString():a));
    }
    alert(text.join('\n'))
  }
}

console.log("test",new Date())
于 2013-01-16T11:14:57.810 回答