触发content_script的browser_action失败
browser_action to trigger content_script failed
我想要的是,当我点击browser_action图标时,网页做了一些css,但它失败了,出现了以下代码,它根本没有响应。知道吗?
清单json文件看起来像这个
{
"manifest_version": 2,
"name": "Test",
"description": "yada yada",
"version": "1.0",
"permissions": [
"https://*/*",
"tabs"
],
"icons": {
"128" : "icon.png"
},
"browser_action": {
"default_icon": "icon.png"
},
"content_scripts": [
{
"matches": [
"http://*/*",
"https://*/*"
],
"js": ["jquery.js","request.js"],
"run_at": "document_end"
}
]
}
我的请求.js在这里
chrome.browserAction.onClicked.addListener(function (){
document.body.style.background = 'yellow';
});
据我所知,您希望使用编程注入来更改相关页面的css
。为此,您的清单.json应包括以下权限:
"permissions": [
"activeTab"
],
访问chrome.*API在内容脚本中受到限制
一旦设置了权限,就可以通过调用tabs.executeScript将JavaScript注入页面。要注入CSS,请使用tabs.insertCSS.
所以你会想做这样的事情(注入javascript代码):
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript({
code: 'document.body.style.backgroundColor="yellow"'
});
});
或者,您可以使用activeTab上文档中描述的insertCss方法,如下所示:
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.insertCSS(tab.id, {
code: 'document.body.style.backgroundColor="yellow"'
});
});
再次从文档:
如果您的内容脚本的代码应该始终被注入,请使用content_scripts字段将其注册到扩展清单中,如以下示例所示-
"content_scripts": [
{
"matches": ["http://www.google.com/*"],
"css": ["mystyles.css"], //mystyle.css gets injected into the relevant pages.
"js": ["jquery.js", "myscript.js"]
}
],
EDIT-我应该早些时候明确说明这一点,但文档明确表示内容脚本不能
使用chrome.*API,例外为:扩展名(getURL,inIncognitoContext,lastError,onRequest,sendRequest)
因此,您不能在内容脚本中执行以下操作(我想知道它是如何为您工作的):
chrome.browserAction.onClicked.addListener(function callback)
也就是说,您确实可以访问后台页面中的browserAction
API。它需要这样的东西:
manifest.json:
{
...
"background": {
"scripts": ["background.js"]
},
...
}
background.js:
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript({
code: 'document.body.style.backgroundColor="yellow"'
});
});
本质上,在后台页面中使用chrome.browserAction
,因为内容脚本不支持它。我希望我能澄清我的观点,这将有助于你解决问题。
相关文章:
- 当json解析空响应时,Whatwg-Fetch失败,我该如何防止它
- JsFiddle在分叉后描述失败
- 为什么不'当单元测试出现解析错误时,我的因果报应测试会失败
- 当一些承诺失败时,如何继续使用$q.all()
- 失败:等待Protractor与页面同步时出错:“”;在窗口上找不到角度”;
- 在Jquery中单击传播失败
- 网页上失败的javascript会导致所有其他脚本失败
- 带有对象解析的响应javascript ajax失败
- 一台特定计算机的Ajax请求数据未定义/失败
- Nodejs服务器:加载资源失败:服务器的响应状态为404(未找到)
- jQuery.getJSON失败,语法错误
- 表单's的action属性-如何在javascript中指定完整的应用程序路径
- ng disabled在放入多个表达式时失败
- Jasmine单元测试在监视服务方法时失败
- 调用laravel{{action(Controller@method}}通过传递vue.js数组中的变量
- jQuery分页下一页和上一页按钮在点击零或超过最后一页后失败
- 在iframe的情况下,jQuery html()将失败
- 在我的情况下,使用带有变量失败的 jquery 选择器
- CSS中的转换似乎失败了,原因是什么
- 在数组中插入对象失败