打开IE开发者工具时JavaScript的变化是什么?

时间:2013-01-31 13:57:59

标签: javascript html ajax internet-explorer

从运行 AJAX 应用程序的角度来看,当打开 IE开发者工具时会发生什么变化?

我正在追踪一些Schrödinger小虫。它来自 IE 中来自 PrimeFaces 下拉列表。它们有时在点击后不会打开,并且在最大化浏览器或解压缩内容之后它们被“解锁”。因为这些下拉菜单是在正常输入的基础上实现的,附加div,我认为这是错误地计算显示下拉弹出窗口的地方。我也猜错了AJAX。

但是在打开IE开发者工具之后,几乎不可能重现错误。控制台中没有显示错误,没有AJAX请求挂起,而且,所有内容似乎都运行得更多。

该错误仅适用于IE,因此开发人员工具是调试它的唯一方法。然而,当它们被打开时,似乎观察以某种方式改变状态,就像在量子力学中一样......

所以,我需要知道,通过打开那些开发工具可以改变什么,以防止错误出现?

- 编辑 - 它与console.log。这是计算不可见元素大小的问题。通过向主体添加滚动来解决问题。但是,问题是开放的,IE开发者工具如何影响这些计算。

1 个答案:

答案 0 :(得分:1)

如果你真的想要总是使用console,我建议使用polyfill:

(function(b){
    var a=0;
    var c=function(){};
    var d=["log","assert","clear","count","debug","dir","dirxml","error","exception","group","groupCollapsed","groupEnd","info","profile","profileEnd","table","time","timeEnd","timeStamp","trace","warn"];
    b.console=b.console||{};
    for(;a<d.length;a++){
        b.console[d[a]]=b.console[d[a]]||b.console["log"]||c;
    }
})(window);

这是我试图使其易读的缩小范例。这是我前一段时间发现并修改过的东西。我认为我修改的主要内容是,如果您调用的方法最初并非由浏览器的原生console实现,则会调用console.log。如果console.log未在本机实现,则只调用空函数。此代码的原始版本未包含此console.log的回退。

这将“保证”console来电不会失败。您可以将d变量更改为仅包含您确定要使用的调用,否则会有一些额外的不必要处理。

相关问题