gpt4 book ai didi

javascript - 外部 javascript 劫持 console.log

转载 作者:行者123 更新时间:2023-11-30 10:31:21 24 4
gpt4 key购买 nike

我注意到一个奇怪的行为,即我的 console.log 语句没有做任何事情。我终于将其追踪到了一个外部脚本:

<!-- Load the systems bio heatmap package -->
<script type="text/javascript" src="http://systemsbiology-visualizations.googlecode.com/svn/trunk/src/main/js/load.js"></script>
<script type="text/javascript">
// uncommenting the following line ruins console.log
// systemsbiology.load("visualization", "1.0", {packages:["bioheatmap"]});
</script>

不幸的是,此脚本用于运行谷歌图表 (AFAIK) 的唯一热图包。

有没有办法以某种方式备份 console.log 然后在执行他们的代码后恢复它?我尝试进行浅备份但没有成功:

<!-- Load the systems bio heatmap package -->
<script type="text/javascript" src="http://systemsbiology-visualizations.googlecode.com/svn/trunk/src/main/js/load.js"></script>
<script type="text/javascript">
var temp = console.log;
// the following line ruins console.log
systemsbiology.load("visualization", "1.0", {packages:["bioheatmap"]});

console.log = temp;
console.log('test'); // does not work

</script>

现在我在问一个知道他在做什么的人。

预先感谢您的帮助。

最佳答案

您的代码确实有效,但前提是 console 对象被保留,并且其上的方法被替换。

var temp = console.log;

// the following line ruins console.log
console.log = function() {};

// put console.log back
console.log = temp;
console.log('test');

http://jsfiddle.net/CBv2T/

如果 console 对象被替换,正如我怀疑的那样,这将不起作用。那么为什么不保存/恢复整个控制台对象呢?

var temp = console;

// the following line ruins console.log
window.console = {};

// Put the whole console object back
window.console = temp;
console.log('test');

http://jsfiddle.net/CBv2T/1/


但正如@gpojd 指出的那样,这是您正在使用的库中的一个主要错误。他们真的应该解决这个问题......

关于javascript - 外部 javascript 劫持 console.log,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16800042/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com