Google chrome extension 使用chrome扩展名覆盖console.log(内容脚本)

Google chrome extension 使用chrome扩展名覆盖console.log(内容脚本),google-chrome-extension,Google Chrome Extension,我正在编写一个小小的chrome扩展,它通过ajax调用将console.log输出重定向到http服务器。但是我发现,我无法覆盖console.log函数。内容脚本(用于测试): 它保持功能不变 谁都知道,原因是什么?有没有其他方法来存档这个问题?我没有足够的声誉来评论或投票,所以我只是在这里发表评论,请随意删除我的答案 我建议您参考。内容脚本在中运行。您可以通过创建脚本标记并将其注入DOM来解决这个问题 var script = document.createElement("script"

我正在编写一个小小的chrome扩展,它通过ajax调用将console.log输出重定向到http服务器。但是我发现,我无法覆盖console.log函数。内容脚本(用于测试):

它保持功能不变


谁都知道,原因是什么?有没有其他方法来存档这个问题?

我没有足够的声誉来评论或投票,所以我只是在这里发表评论,请随意删除我的答案

我建议您参考。

内容脚本在中运行。您可以通过创建脚本标记并将其注入DOM来解决这个问题

var script = document.createElement("script")
script.textContent = "console.log = function() { return 0 }"
document.appendChild(script)

当您说您不能覆盖console.log函数时,您的意思是您正在调用function console.log,但在控制台中看不到它吗?如果是这样,我可以告诉你原因。请告诉我你的文件结构嗨!如果我在post到控制台的代码行中键入代码,然后尝试调用函数console.log(“bla”),我会得到预期的结果:0-因此console.log被我指定的函数覆盖,该函数返回0。但是,当我将代码放入内容脚本时,它的行为并不相同,脚本会运行,但如果它随后在控制台中执行相同的测试,则会得到一个返回“bla”的未更改的console.log函数。在此上下文中,文件结构是什么意思?如果您正在编写一个chrome扩展名,并试图在浏览器中查看当前选项卡上的consol.log,则此操作将不起作用。您可以创建一个类似popup.js的文件,当您单击其图标时,该文件将被激活,然后检查弹出窗口上的控制台。但是你必须编写更多的代码来与后台的扩展和前台查看的选项卡进行通信。他的问题是他使用扩展并试图console.log。您不能仅通过console.log与open选项卡和后台扩展进行通信
var script = document.createElement("script")
script.textContent = "console.log = function() { return 0 }"
document.appendChild(script)