retetting Console.log to IT默认功能

问题描述 投票:0回答:3

在一个实时网站上,我以前更改了Console.log为:

var console = {};
console.log = function () {};

在此代码始终执行的情况下,是否有可能在此代码之后恢复控制台功能,如果是,则如何? 由于网站是直播的,因此需要

。但是我需要进一步开发,而无需对实时网站进行任何更新。没有控制台记录/信息很难。

javascript default console.log
3个回答
4
投票
如果代码不在顶级运行,因为

console

window
上,您可以参考
window.console.log
,例如:

(() => {
  var console = {};
  console.log = window.console.log;
  console.log('foo');
  // or, just reference window:
  window.console.log('bar');
})();

如果代码在顶级运行,并且您使用的是

const
let
(而不是ES5
var
),则可以做同样的事情:

const console = {};
console.log = window.console.log;
console.log('foo');

,否则,您必须保存对

console.log
的引用,然后再重新分配使用
console

var

但是,除非绝对必要,否则创建/覆盖内置的全局变量可能不是一个好主意 - 第一个摘要中的IIFE可能是可取的。


1
投票
var log = console.log; var console = {}; console.log = log; log('foo');

因此,当您需要将控制台重置为正常功能时,您只需:

var oldConsole = window.console; var console = {};
    

您要么备份上述参考,然后可以使用其功能或还原原始控制台
console = oldConsole.log; // since it's 'window.console.log'
console.log('Hello, world!'); // this output will now display on devtools with its default configuration

0
投票
或者如果一个人失去了对游戏机的所有参考,则喜欢

var backupConsole = console;
您可以创建新的iframe Enviroment并从中使用

console = {}

但这只是对iFrame控制台的引用,而不是实际丢失的原始控制台。只要您删除iframe

var iframe = document.createElement("iframe"); document.body.appendChild(iframe); console = iframe.contentWindow.console; // magic happens there console.log("🧃");

您将再次失去您的控制台。
P.S。自2022年8月24日评论以来,我已经调查了此案!
    

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.