Mil*_*ric 16 javascript browser cross-browser dom-events
我正在尝试在javascript中为未捕获的异常和浏览器警告编写处理程序.应将所有错误和警告发送到服务器以供日后查看.
可以捕获处理的异常并轻松记录
console.error("Error: ...");
Run Code Online (Sandbox Code Playgroud)
要么
console.warn("Warning: ...");
Run Code Online (Sandbox Code Playgroud)
因此,如果从javascript代码调用它们就不会有问题,甚至更多,未处理的异常可以通过这种代码安静来捕获:
window.onerror = function(){
// add to errors Stack trace etc.
});
}
Run Code Online (Sandbox Code Playgroud)
因此异常被覆盖,但我一直坚持浏览器发送到控制台的警告.例如安全性或html验证警告.以下示例来自Google Chrome控制台
https://domainname.com/上的页面从http://domainname.com/javascripts/codex/MANIFEST.js运行了不安全的内容 .
如果有像window.onerror这样的事件但是警告会很棒.有什么想法吗?
小智 16
你可以console
自己包装方法.例如,要在数组中记录每个调用:
var logOfConsole = [];
var _log = console.log,
_warn = console.warn,
_error = console.error;
console.log = function() {
logOfConsole.push({method: 'log', arguments: arguments});
return _log.apply(console, arguments);
};
console.warn = function() {
logOfConsole.push({method: 'warn', arguments: arguments});
return _warn.apply(console, arguments);
};
console.error = function() {
logOfConsole.push({method: 'error', arguments: arguments});
return _error.apply(console, arguments);
};
Run Code Online (Sandbox Code Playgroud)
// this method will proxy your custom method with the original one
function proxy(context, method, message) {
return function() {
method.apply(context, [message].concat(Array.prototype.slice.apply(arguments)))
}
}
// let's do the actual proxying over originals
console.log = proxy(console, console.log, 'Log:')
console.error = proxy(console, console.error, 'Error:')
console.warn = proxy(console, console.warn, 'Warning:')
// let's test
console.log('im from console.log', 1, 2, 3);
console.error('im from console.error', 1, 2, 3);
console.warn('im from console.warn', 1, 2, 3);
Run Code Online (Sandbox Code Playgroud)
我知道这是一篇旧帖子,但无论如何它都会很有用,因为其他解决方案与旧浏览器不兼容。
您可以像这样重新定义控制台(以及所有浏览器)的每个功能的行为:
// define a new console
var console = (function(oldCons){
return {
log: function(text){
oldCons.log(text);
// Your code
},
info: function (text) {
oldCons.info(text);
// Your code
},
warn: function (text) {
oldCons.warn(text);
// Your code
},
error: function (text) {
oldCons.error(text);
// Your code
}
};
}(window.console));
//Then redefine the old console
window.console = console;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
20025 次 |
最近记录: |