我是铬扩展开发新手。我的示例代码没有正常运行。 要求:执行任何jQuery脚本(比如$(“body”)。hide();)点击上下文菜单按钮。在Chrome扩展中运行由上下文菜单触发的jquery脚本
从代码中,只有jquery部分不工作。
我有以下文件:
的manifest.json
{
"manifest_version": 2,
"name": "jQuery DOM",
"version": "1",
"permissions": [
"contextMenus","tabs","activeTab"
],
"background": {
"scripts": ["jquery.min.js","sample.js"]
},
"description": "Manipulate the DOM when the page is done loading",
"browser_action": {
"name": "Manipulate DOM",
"icons": ["icon.png"],
"default_icon": "icon.png"
},
"content_scripts": [ {
"js": [ "jquery.min.js", "background.js" ],
"matches": [ "http://*/*", "https://*/*"],
"run_at": "document_end"
}]
}
background.js
$("body").append('Test');
我的icon.png文件夹中,它被加载好。 jquery.min.js在同一个文件夹
sample.js
alert("Extension loaded");
function genericOnClick(info, tab) {
alert("Tab "+tab.id);
chrome.tabs.executeScript(tab.id, {
file: "jquery.min.js",
allFrames: true
},function(){
alert("callback");
$("body").hide();
});
alert("Completed");
$("body").hide();
}
var contexts = ["page"];
for (var i = 0; i < contexts.length; i++) {
var context = contexts[i];
var title = "Test Page menu item";
var id = chrome.contextMenus.create({"title": title, "contexts":[context],
"onclick": genericOnClick});
console.log("'" + context + "' item:" + id);
}
background.js作品! 所有警报工作文件,但genericOnClick中的.hide函数不起作用。 即使我将代码从sample.js移动到backgroud.js,它也不起作用。 你能告诉我我哪里出错了吗?
它看起来像是通过浏览器操作(当您单击操作的图标时运行)将内容脚本(在每个页面的上下文中运行)与后台脚本(在每个页面上的Chrome上下文中运行)结合使用。你想做什么,你想什么时候发生? – Teepeemm
我想要$(“body”)。hide()应该工作,当我点击上下文菜单项。 – user3316594
除了背景脚本('sample.js')不允许与DOM进行交互之外,一切看起来都很好。我认为你需要发送你的内容脚本('background.js' - 应该重命名),并且隐藏它的内容。而且你不需要浏览器操作。这是否照顾事物? – Teepeemm