是否可以创建一个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的属性,我可以从控制台输出中看到。。。我只是在猜测它是怎么工作的。你确定吗?真的没有办法吗?。。。对不起,官方网页上是这么说的/-因为我说“不可能”。这当然是可能的(将问题标记为重复)。我说“似乎是”而不是“是”。别客气@罗布:我对否决票不感兴趣。看,我提到了一个已经存在的答案和官方的开发者指南,内容脚本“不能”做到这一点。所以官方的“不能”一词让我说,对我来说,这“似乎不可能”——至少在没有剥削的情况下。