访问窗口.覆盖后的控制台
Access window.console after overwrite
是否可以在覆盖后以某种方式访问console.log ?
window.console = { log: function (msg) { alert(msg); }, /* etc... */ };
是否有可能恢复原来的console.log功能?
您可以在覆盖控制台之前备份它。
var oldConsole = window.console;
window.console = { log:function(msg){alert(msg)} //...};
那么您可以使用oldConsole
变量。
oldConsole.log('test');
如果你不能备份它,你可以创建一个iFrame,然后从那里窃取控制台(这可能不是在所有浏览器中都有效):
var i = document.createElement('iframe');
i.style.display = 'none';
document.body.appendChild(i);
window.console = i.contentWindow.console;
演示:http://jsfiddle.net/jcG7E/2
Edit(2017-04-08):这个建议已经过时了,在Firefox 52和Chrome 57中console
不再在窗口原型上定义,删除它将真正删除它。
至少对于Firefox和Chrome定义的console
对象,您可以简单地删除覆盖的属性以恢复原始属性:
window.console = {};
delete window.console;
window.console.log("This works!");
这就像在window
对象的原型上定义了console
属性一样——除了它不是,浏览器在这里做了一些神奇的事情。
不可能。除非重写它的人包含了一些代码来撤销它
var customLog = {
oriLog: '',
Log: function(){
// create string to display
var displaystring = '';
for (var i = 0, len = arguments.length; i < len; i++) {
displaystring += arguments[i];
if (i + 1 != len)
displaystring += ', ';
}
alert(displaystring);
customLog.oriLog(arguments);
}
}
window.onload = function(){
if (console != null) {
customLog.oriLog = console.log;
console.log = customLog.Log;
}
}
相关文章:
- 在循环中分配json值时,值被覆盖
- 控制台返回var不是't定义,但它是
- 谷歌地图固定位置覆盖
- 只覆盖箭头键滚动事件
- JQuery覆盖不更改单选选项
- 如何覆盖锚点元素's href目标,并在我点击转到目标javascript时删除其他错误
- 有没有一种方法可以在控制台关闭的情况下让console.log()在IE中记录消息
- 如何使用Protractor从Chrome控制台获取所有日志
- 将添加一个相同类型的事件附加或覆盖以前添加的具有相同名称的事件
- 传单中如何在更改基层时启用/禁用覆盖层
- 点击(右键点击)使用传单地图库获取图像覆盖的像素坐标
- HTML/CSS-用于拖放的全页面覆盖
- 让javascript知道epub3电子书中何时播放媒体覆盖
- 覆盖函数中的函数
- 无法覆盖CSS伪元素:before
- 覆盖控制台.log在 JavaScript 中
- 如何在控制台对象后使用console.log()'s的函数已被覆盖
- 如何在不覆盖console.log的情况下将浏览器控制台日志保存到数据库中
- 覆盖时的访问控制台功能
- 访问窗口.覆盖后的控制台