我遇到了一个我以前从未见过的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对象中。
答案 0 :(得分: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())