更改控制台对象引用后,可以访问控制台

时间:2014-02-21 20:25:39

标签: javascript firebug greasemonkey console.log

我喜欢制作用户脚本。获得对您喜欢的页面的更多控制或加速它的加载真的很有趣。

当然,我遇到了一个问题,即页面要么定义对新虚拟对象的控制台引用:

window.console = {log: function() {}, info: function() {} ... };

或者它甚至破坏了这些功能:

window.console.log = function() {};
window.console.info = function() {};
...

我正在使用window来表明我在谈论全球范围。另外,在第二个例子

中,我没有故意使用相同功能的快速分配

现在你怎么处理这个?提醒工作很好,但我已经习惯了Firebug和它的控制台了很多 无法表达我对任何帮助的优雅程度。

PNS。:目前,League of Legends forums是相关网站。运行以下代码以查看问题:

window.console.log.toString(); //returns "function () {}"

1 个答案:

答案 0 :(得分:3)

嗯,我这里有一个令人讨厌的解决方案。创建一个iframe(创建新窗口)并获取该iframe的控制台对象:

function healConsole() {
  //<iframe> element
  var iframe = document.createElement("iframe");
  //Hide it somewhere
  iframe.style.position="fixed";
  iframe.style.height = iframe.style.width = "1px";
  iframe.style.top = iframe.style.left = "-5px";
  //No src to prevent loading some data
  iframe.src = "about: blank";
  //Needs append to work
  document.body.appendChild(iframe);
  //Get the inner console
  window.console = iframe.contentWindow.console;
}

不确定跨浏览器是怎么回事。我正在寻找更好的东西......