spr*_*man 27 javascript debugging console
我有一个我无法更改的脚本,它会调用很多console.log.我想添加另一个图层并在调用包含某些字符串时进行响应.这适用于FF,但在第4行Chrome中引发了"非法调用"错误:
var oldConsole = {};
oldConsole.log = console.log;
console.log = function (arg) {
oldConsole.log('MY CONSOLE!!');
oldConsole.log(arg);
}
Run Code Online (Sandbox Code Playgroud)
任何想法如何解决?我也试过克隆控制台......
zzz*_*Bov 38
您需要console.log
在console
chrome 的上下文中调用:
(function () {
var log = console.log;
console.log = function () {
log.call(this, 'My Console!!!');
log.apply(this, Array.prototype.slice.call(arguments));
};
}());
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)
您也可以使用相同的逻辑,但是从控制台对象中调用它以使上下文相同.
if(window.console){
console.yo = console.log;
console.log = function(str){
console.yo('MY CONSOLE!!');
console.yo(str);
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12435 次 |
最近记录: |