Javascript 有人更换了一些脚本上的控制台,现在我无法使用它

Javascript 有人更换了一些脚本上的控制台,现在我无法使用它,javascript,Javascript,正如标题所说,我正在使用的网页中的某些脚本执行以下操作: window.console={},window.console.log=函数{} 我不允许删除它,但我的大多数代码已经使用console来记录日志,我不想改变这一点,有什么方法可以让我仍然使用console吗?如果有帮助的话,这将只在chrome上运行 谢谢。我认为有一种方法,如果你能在坏代码之前运行一些代码。 将console对象保存到另一个变量,如: window.cons = window.console; 然后您可以使用控制台

正如标题所说,我正在使用的网页中的某些脚本执行以下操作: window.console={},window.console.log=函数{}

我不允许删除它,但我的大多数代码已经使用console来记录日志,我不想改变这一点,有什么方法可以让我仍然使用console吗?如果有帮助的话,这将只在chrome上运行


谢谢。

我认为有一种方法,如果你能在坏代码之前运行一些代码。 将console对象保存到另一个变量,如:

window.cons = window.console;
然后您可以使用控制台,如:

window.cons.log('something');

只要这只是为了调试,而不是为了生产,您就可以插入iframe并访问它的控制台

var iframe = document.createElement('iframe');
iframe.style.display = 'none';
document.body.appendChild(iframe);
_console = {};
_console.log = function() {
    return iframe.contentWindow.console.log.apply(iframe.contentWindow.console, arguments)
}
不过,这假设存在控制台功能。它会在控制台不存在的地方抛出一个错误。如果需要对此进行保护,只需修改日志函数以检查iframe.contentWindow.consoles是否存在

_console.log = function() {
    return iframe.contentWindow.console && iframe.contentWindow.console.log.apply(iframe.contentWindow.console, arguments)
}

我想OP想特别使用“控制台”这个名称。@mntgoat你能澄清一下吗?我可以切换名称,我只需要控制台功能,但是我无法控制脚本插入的位置,因此我无法100%确定地将console对象保存在另一个变量中。另一个技巧是向dom添加一个虚拟iframe,并使用iframe的窗口。因为iframe有一个自己的窗口对象,并且不加载其他js代码,所以这应该可以工作。但我想说的不是那么好。。。