打开 IE 开发人员工具时 JavaScript 会有什么变化

What is changed for JavaScript when the IE Developers Tools are opened?

本文关键字:JavaScript 什么 变化 工具 IE 开发 打开      更新时间:2023-09-26

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

我现在正在追踪一些薛定谔的错误。这是关于IEPrimeFaces下拉列表。它们有时在点击后无法打开,并且在最大化浏览器或取消缩放内容后被"解锁"。因为这些下拉菜单是在正常输入的基础上实现的,带有附加的div,我认为这是错误地计算了显示下拉弹出窗口的位置。我也假设了 AJAX 错误。

但是打开IE开发人员工具后,几乎不可能重现该错误。控制台中没有显示错误,没有 AJAX 请求挂起,而且,一切似乎都运行得更多。

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

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

--编辑--它与console.log无关.这是计算不可见元素大小的问题。通过在正文中添加卷轴解决了这个问题。但是,问题是悬而未决的,IE开发人员工具如何影响这些计算。

如果你真的想总是包括使用 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 变量更改为仅包含您确定将使用的调用,否则会有一些额外的不必要的处理。