Javascript 如何使用Chrome扩展覆盖网页中的功能?

Javascript 如何使用Chrome扩展覆盖网页中的功能?,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,假设有一个网站有一个全局名称空间Q={},下面有一个函数:Q.foo 我想在我的chrome扩展中覆盖这个函数,所以当网页调用Q.foo时,它会做我喜欢的事情 我试着写: Q.foo = function(){ alert("over written"); } 使用内容脚本。但它不起作用…… 谢谢。主要问题在于,chrome扩展存在于一个单独的环境中,该环境的创建使得扩展开发人员无法使用现有页面的javascript,反之亦然 然而,极客们可以做到这一点: document.hea

假设有一个网站有一个全局名称空间
Q={}
,下面有一个函数:
Q.foo

我想在我的chrome扩展中覆盖这个函数,所以当网页调用
Q.foo
时,它会做我喜欢的事情

我试着写:

Q.foo = function(){
    alert("over written");
}  
使用内容脚本。但它不起作用……

谢谢。

主要问题在于,chrome扩展存在于一个单独的环境中,该环境的创建使得扩展开发人员无法使用现有页面的javascript,反之亦然

然而,极客们可以做到这一点:

document.head.innerHTML += '<script>Q.foo = function(){alert("over written");}</script>';
document.head.innerHTML+='Q.foo=function(){alert(“overwrite”);};

基本上,这是在dom中添加一个脚本标记,然后在页面上下文中立即评估该标记。

我查看了网页中的.js文件,foo没有绑定在原型上,而是在Q下directly@wong2在任何情况下,这都会覆盖Q的所有实例的函数,但Q不是一个函数,它被定义为Q={};我记得如果Q={},那么Q没有属性原型。
document.head.innerHTML += '<script>Q.foo = function(){alert("over written");}</script>';