IE9 Bug - JavaScript只能在打开一次开发工具后才能工作。
我们的网站为用户提供免费的pdf下载,它有一个简单的“输入密码下载”功能。但是,它在ie浏览器中完全不起作用。
你可以在这个例子中看到。
下载通道是“makeuseof”。在任何其他浏览器中,它都可以正常工作。在IE中,两个按钮什么都不做。
我发现最奇怪的事情是,如果你用F12打开和关闭开发人员工具栏,它就会突然开始工作。
我们已经尝试了兼容模式等,没有什么不同。
我如何使这工作在Internet Explorer?
听起来好像你的javascript中有一些调试代码。
您描述的体验是包含console.log()或任何其他控制台功能的典型代码。
控制台对象只有在打开开发工具栏时才被激活。在此之前,调用控制台对象将导致它被报告为未定义。在工具栏被打开之后,控制台将会存在(即使工具栏随后被关闭),因此您的控制台调用将会工作。
这里有一些解决方案:
最明显的方法是在代码中删除对控制台的引用。无论如何,您都不应该在产品代码中留下这样的东西。
如果您希望保留控制台引用,可以将它们包装在If()语句中,或者在尝试调用控制台对象之前检查它是否存在的其他条件中。
如果你使用的是AngularJS版本1。X你可以使用$log服务,而不是直接使用console.log。
简单的日志服务。默认实现将消息安全地写入浏览器的控制台(如果存在)。
https://docs.angularjs.org/api/ng/service/美元日志
如果你有类似的东西
angular.module('logExample', [])
.controller('LogController', ['$scope', function($scope) {
console.log('Hello World!');
}]);
你可以用
angular.module('logExample', [])
.controller('LogController', ['$scope', '$log', function($scope, $log) {
$log.log('Hello World!');
}]);
Angular 2+没有任何内置的日志服务。