We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
最近遇到一个奇怪的问题。IE9下面,不打开控制台代码无法正常运行, 一打开控制台就没有问题了。
对于惯于用控制台调试bug的人来讲,打开控制台,问题就没了,还怎么调试。
灵机一动想起来不知道哪本书上看到的。onerror方法的改写。似乎挺合适这种情况。多看书果然有好处。于是一试。
原始代码如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>error</title> </head> <body> <script> console.log(123); alert('Running normally!'); </script> </body> </html>
从浏览器一打开就没打开过控制台的话,这段代码在IE9或360兼容模式下是不会弹出Running normally!的。 如果打开了,请关闭浏览器重新打开。
现在增加onerror方法:
window.onerror= function(){ var htmlArr = []; for (var i = 0; i < arguments.length; i++) { htmlArr.push(arguments[i].toString()); } alert(htmlArr.join('\n')); return true; } console.log(123); alert('Running normally!');
不开控制台的情况下,遇到错误弹出(错误原因、文件、行号)
console未定义 error.html 19
原理:修改window.onerror方法会在代码遇到错误时进行一些你自定义的操作。比如这里输出错误信息(arguments中拿)。
于是问题就找到了。查一下就知道。在早期的IE浏览器中,有时console对象需要 在控制台打开后才会存在。
于是全局添加一个防止console报错的函数。这里只对console.log作了处理,因为用得多。现在我们公司的库的公共文件里都加上了这一句。以避免console在IE下的bug。当然,理论上console在生产环境上还是要少用。只是以防万一。
;(function(){ if(!window.console){ window.console = {} console.log = function(){} } })();
至此,问题解决。IE9下运行。弹出Running normally! 删除window.onerror方法。
这里主要记录两点: 1.IE下的console的bug。 2.使用window.onerror在不打开控制台的情况下弹出错误信息解决一些不方便打开控制台的bug。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
一个不打开浏览器工具的调试方法
最近遇到一个奇怪的问题。IE9下面,不打开控制台代码无法正常运行,
一打开控制台就没有问题了。
对于惯于用控制台调试bug的人来讲,打开控制台,问题就没了,还怎么调试。
灵机一动想起来不知道哪本书上看到的。onerror方法的改写。似乎挺合适这种情况。多看书果然有好处。于是一试。
原始代码如下:
从浏览器一打开就没打开过控制台的话,这段代码在IE9或360兼容模式下是不会弹出Running normally!的。
如果打开了,请关闭浏览器重新打开。
现在增加onerror方法:
不开控制台的情况下,遇到错误弹出(错误原因、文件、行号)
原理:修改window.onerror方法会在代码遇到错误时进行一些你自定义的操作。比如这里输出错误信息(arguments中拿)。
于是问题就找到了。查一下就知道。在早期的IE浏览器中,有时console对象需要
在控制台打开后才会存在。
于是全局添加一个防止console报错的函数。这里只对console.log作了处理,因为用得多。现在我们公司的库的公共文件里都加上了这一句。以避免console在IE下的bug。当然,理论上console在生产环境上还是要少用。只是以防万一。
至此,问题解决。IE9下运行。弹出Running normally!
删除window.onerror方法。
这里主要记录两点:
1.IE下的console的bug。
2.使用window.onerror在不打开控制台的情况下弹出错误信息解决一些不方便打开控制台的bug。
The text was updated successfully, but these errors were encountered: