你一直没有把不应该混在一起的东西混合起来。
有一件事你已经做错了:
既然你不想要的弹出浏览器上的动作按钮点击时才会出现,你不应该指定一个“默认弹出”:
...
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html" // <-- this line should go away
},
...
随着中说,要解决这个问题的最好办法(IMO)如下:
有你的背景页(或更好,但event-page)监听chrome.browserAction.onClicked事件。
(请注意,为了使事件被触发,没有默认弹出必须设置。)
发生这种情况时,使用programmatic injection注入jquery.min.js
和content.js
到活动标签的页面,使用chrome.tabs.executeScript。
为了使上述步骤是可能的,你还必须声明的必要permissions,即"tabs"
和URL应该是您的分机访问的页面的match-patterns(如"http://*/*"
和"https://*/*"
有使用http和https方案访问所有页面)。
我也建议,为了与现有的领域和可能的值来熟悉采取了很好看的manifest specification。
最后,一些演示源代码,让你开始(我知道所有的信息同时可以压倒一切):
扩展文件夹结构:
_______________LinkHighlighter_______________
| | |
manifest.json img js
| |__background.js
icon<XX>.png(*) |__content.js
|__jquery.min.js
(*): <XX> = 16, 19, 38, 48, 128
清单。 json:
{
"manifest_version": 2,
"name": "Link Highlighter",
"version": "1.0",
"description": "...",
"icons": {
"16": "img/icon16.png",
"48": "img/icon48.png",
"128": "img/icon128.png"
},
"browser_action": {
"default_title": "Link Highlighter",
"default_icon": {
"19": "img/icon19.png",
"38": "img/icon38.png"
}
},
"background": {
"persistent": false,
"scripts": ["js/background.js"]
},
"permissions": [
"tabs",
"http://*/*",
"https://*/*"
]
}
background.js:
// When the user clicks the browser-action button...
chrome.browserAction.onClicked.addListener(function(tab) {
// ...inject 'jquery.min.js' and...
chrome.tabs.executeScript(tab.id, {
file: "js/jquery.min.js",
allFrames: true,
runAt: "document_idle"
});
// ...inject 'content.js' into the active tab's page
chrome.tabs.executeScript(tab.id, {
file: "js/content.js",
allFrames: true,
runAt: "document_idle"
});
});
content.js:
$("a").css({ "background-color": "yellow" });
不要犹豫,回来,你应该有进一步的问题/问题:)
为了完整起见...
...让我刚刚提到,THRE是可能的其他方法,如sush:
使用网页的行为,而不是浏览器的作用。
向您的内容脚本注入每个页面,并通过从背景页面到内容脚本的消息传递来触发突出显示。
这是什么问题? – citykid
究竟是什么问题?它应该工作。看看这个网站:http://carl-topham.com/theblog/post/creating-chrome-extension-uses-jquery-manipulate-dom-page/ – yarl
当我加载插件,并点击它,它只显示一个小小的弹出框,在右下角有一个小灰盒子。 – user2200175