Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.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
是否可以创建一个Chrome扩展来执行属于所浏览页面的javascript函数?_Javascript_Google Chrome_Google Chrome Extension - Fatal编程技术网

是否可以创建一个Chrome扩展来执行属于所浏览页面的javascript函数?

是否可以创建一个Chrome扩展来执行属于所浏览页面的javascript函数?,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,可能重复: 下面是我的初步尝试。首先,我创建了一个测试网页: -test.html- <HTML> <SCRIPT src="script.js"></SCRIPT> </HTML> function testFunction() { console("function successfully run!"); } { "name": "Function Test", "manifest_version": 2, "versi

可能重复:

下面是我的初步尝试。首先,我创建了一个测试网页:

-test.html-

<HTML>
<SCRIPT src="script.js"></SCRIPT>
</HTML>
function testFunction() {
  console("function successfully run!");
}
{
  "name": "Function Test",
  "manifest_version": 2,
  "version": "1",
  "description": "An extension to experiment with running the javascript functions of the website being browsed.",
  "permissions": ["<all_urls>"],
  "content_scripts": [
    {
      "all_frames": true,
      "matches": ["<all_urls>"],
      "js": ["cs.js"],
      "run_at": "document_end"
    }
  ]
}
scriptNodes = document.getElementsByTagName("script");
script = scriptNodes[0];
console.log(script.src);
script.testFunction();
然后,我创建了一个非常简单的扩展,看看是否可以从内容脚本运行testFunction():

-manifest.json-

<HTML>
<SCRIPT src="script.js"></SCRIPT>
</HTML>
function testFunction() {
  console("function successfully run!");
}
{
  "name": "Function Test",
  "manifest_version": 2,
  "version": "1",
  "description": "An extension to experiment with running the javascript functions of the website being browsed.",
  "permissions": ["<all_urls>"],
  "content_scripts": [
    {
      "all_frames": true,
      "matches": ["<all_urls>"],
      "js": ["cs.js"],
      "run_at": "document_end"
    }
  ]
}
scriptNodes = document.getElementsByTagName("script");
script = scriptNodes[0];
console.log(script.src);
script.testFunction();
以下是控制台输出:

file:///C:/.../script.js
Uncaught TypeError: Object #<HTMLScriptElement> has no method 'testFunction'
file:///C:/.../script.js
未捕获的TypeError:对象#没有方法“testFunction”

那么,是否可以在使用Chrome扩展浏览的网站上运行功能?

似乎不可能

看到和

但是,内容脚本有一些限制。他们不能:

  • 使用chrome.*api(chrome.extension部分除外)
  • 使用由其扩展页定义的变量或函数
  • 使用由网页或其他内容脚本定义的变量或函数

您的用例是什么?你在尝试构建一个JSFIDLE克隆吗?如果这是一个玩笑,那么很抱歉,我不明白:p我想构建一个扩展,以某种方式运行正在浏览的网站的javascript。这就是我要说的!方法不是脚本tagHi@JuanMendes的属性,我可以从控制台输出中看到。。。我只是在猜测它是怎么工作的。你确定吗?真的没有办法吗?。。。对不起,官方网页上是这么说的/-因为我说“不可能”。这当然是可能的(将问题标记为重复)。我说“似乎是”而不是“是”。别客气@罗布:我对否决票不感兴趣。看,我提到了一个已经存在的答案和官方的开发者指南,内容脚本“不能”做到这一点。所以官方的“不能”一词让我说,对我来说,这“似乎不可能”——至少在没有剥削的情况下。