Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
外部javascript劫持console.log_Javascript - Fatal编程技术网

外部javascript劫持console.log

外部javascript劫持console.log,javascript,Javascript,我注意到一个奇怪的行为,我的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> <

我注意到一个奇怪的行为,我的
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>
现在我在问一个知道他在做什么的人

提前感谢你的帮助

<!-- backup console log method -->
  <script> var temp = console.log.bind(console); </script>

<!-- Load the systems bio heatmap package -->
  <script src="http://systemsbiology-visualizations.googlecode.com/svn/trunk/src/main/js/load.js"></script>

<!-- restore  console log method -->
  <script>
     console.log = temp;
     console.log('test'); // does work
  </script>
由于log()方法是硬编码的,在内部使用“this”,因此在记忆该方法时,我们需要随身携带“this”

由于log()方法是硬编码的,在内部使用“this”,因此在记忆该方法时,我们需要随身携带“this”。

您的代码确实有效,但前提是保留了
控制台
对象,并替换了其上的方法

var temp = console.log;

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

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

相反,如果替换了
控制台
对象(我怀疑是这种情况),这将不起作用。那么为什么不保存/恢复整个控制台对象呢

var temp = console;

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

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


但正如@gpojd所指出的,这是您正在使用的库中的一个主要错误。他们应该真的修复…

您的代码确实可以工作,但前提是保留
控制台
对象,并替换其上的方法

var temp = console.log;

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

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

相反,如果替换了
控制台
对象(我怀疑是这种情况),这将不起作用。那么为什么不保存/恢复整个控制台对象呢

var temp = console;

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

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



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

您尝试的“浅备份但没有运气”在哪里?我相信有一种更简单的方法,但您可以这样做:
var logger=console.log.bind(console)在坏零件之前,然后使用
console.log=logger可能要恢复它?我会为项目打开一个bug。[B] ioheatmap.js,如果firebug不存在,第682行将关闭它。这忽略了其他浏览器,如Chrome。“不工作”的确切含义是什么?@FelixKling在本例中,我相信“不工作”的意思是
TypeError:非法调用
@gpojd+1很好。至少我可以获取我自己的本地版本的文件,并注释掉他们的“帮助”代码。免费代码从网络。。。值得每一分钱。你们的“浅备份但并没有运气”的尝试在哪里?我相信有一种更简单的方法,但您可以这样做:
var logger=console.log.bind(console)在坏零件之前,然后使用
console.log=logger可能要恢复它?我会为项目打开一个bug。[B] ioheatmap.js,如果firebug不存在,第682行将关闭它。这忽略了其他浏览器,如Chrome。“不工作”的确切含义是什么?@FelixKling在本例中,我相信“不工作”的意思是
TypeError:非法调用
@gpojd+1很好。至少我可以获取我自己的本地版本的文件,并注释掉他们的“帮助”代码。免费代码从网络。。。值得每一分钱。这个浅拷贝随机工作,并且仅适用于
console.log('test')
(由于竞争条件,systemsbio代码尚未执行)。以后的控制台语句不起作用。它们不会出现。请参阅上面的答案(它被描述为库中的一个bug)。“不显示”有点夸张,但它可能是破坏方法的非法调用,请参阅我更新的答案以获得该修复…此浅拷贝随机工作,仅适用于
console.log('test')
(由于竞争条件,systemsbio代码尚未执行)。稍后的控制台语句不起作用。它们不会出现。请参阅上面的答案(在库中被描述为一个bug)。“不出现”有点夸张,但可能是非法调用破坏了该方法,请参阅我更新的答案以获得修复。。。