为了账号安全,请及时绑定邮箱和手机立即绑定

为什么JavaScript只在IE中打开开发者工具之后才能工作呢?

为什么JavaScript只在IE中打开开发者工具之后才能工作呢?

慕斯709654 2019-06-19 10:21:17
为什么JavaScript只在IE中打开开发者工具之后才能工作呢?IE9Bug-JavaScript只在打开一次开发工具之后才能工作。我们的网站提供免费的pdf下载给用户,它有一个简单的“输入密码下载”功能。但是,它在InternetExplorer中根本不起作用。你可以在这里亲眼看到例.下载通行证是“MakeUseOf”。在任何其他浏览器中,它都可以正常工作。在IE中,两个按钮都什么也不做。我发现最奇怪的是,如果使用F12打开并关闭Developer工具栏,它就会突然开始工作。我们尝试过兼容模式,但是没有什么不同。如何在InternetExplorer中工作?
查看完整描述

3 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

听起来,您的javascript中可能有一些调试代码。

您所描述的经验是典型的代码,其中包含console.log()或者其他任何一个console功能。

这个console对象仅在打开“开发工具栏”时才被激活。在此之前,调用控制台对象将导致将其报告为undefined..工具栏打开后,控制台将存在(即使工具栏随后关闭),因此控制台调用将工作。

对此有几种解决办法:

最明显的方法是遍历代码,删除对console..无论如何,你不应该在生产代码中留下这样的东西。

如果希望保留控制台引用,可以将它们包装在if()语句,或者在尝试调用控制台对象之前检查控制台对象是否存在的其他条件。


查看完整回答
反对 回复 2019-06-19
?
慕哥9229398

TA贡献1877条经验 获得超6个赞

HTML 5样板有一个很好的预先编写的代码来修复控制台问题:

// Avoid `console` errors in browsers that lack a console.(function() {
    var method;
    var noop = function () {};
    var methods = [
        'assert', 'clear', 'count', 'debug', 'dir', 'dirxml', 'error',
        'exception', 'group', 'groupCollapsed', 'groupEnd', 'info', 'log',
        'markTimeline', 'profile', 'profileEnd', 'table', 'time', 'timeEnd',
        'timeStamp', 'trace', 'warn'
    ];
    var length = methods.length;
    var console = (window.console = window.console || {});

    while (length--) {
        method = methods[length];

        // Only stub undefined methods.
        if (!console[method]) {
            console[method] = noop;
        }
    }}());

如@plus-在评论中指出,最新版本可在GitHub页面




查看完整回答
反对 回复 2019-06-19
?
红颜莎娜

TA贡献1842条经验 获得超12个赞

除了console.log问题(至少在IE11中):

当控制台未打开时,IE会进行相当积极的缓存,因此请确保$.ajax呼叫或XMLHttpRequest调用的缓存设置为false。

例如:

$.ajax({cache: false, ...})

当开发人员控制台打开时,缓存就不那么咄咄逼人了。似乎是一个bug(或者可能是一个特性?)


查看完整回答
反对 回复 2019-06-19
  • 3 回答
  • 0 关注
  • 650 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信