试图注入CSS后DOM加载(写Chrome扩展)
Trying to inject CSS after DOM loaded (Writing Chrome Extension)
我想写一个Chrome扩展,只是添加一个CSS文件到页面的CSS定义的结束。
Google的文档说我可以使用chrome.tabs.insertCSS()
函数来添加css到页面,但是从content_script
包含的javascript文件中运行它没有任何作用。
我正在尝试谷歌网站上记录的两种不同的方法。我有一个alert()
语句来告诉我在脚本中的位置,但它从来没有运行最后的alert
。这让我觉得我的脚本可能在中间的某个地方崩溃了。
以下是我的源文件:manifest.json
{
"name": "Custom CSS to GOOGLE",
"version": "1.0",
"description": "The first extension that I made.",
"content_scripts": [
{
"matches": ["http://*/*"],
//"js": ["style_injector.js"],
"js": ["inject.js"],
"css": ["newstyle.css"]
}
],
"permissions": [
"tabs", "http://*/*"
]
}
inject.css
alert("newpage");
chrome.tabs.executeScript(null, {code:"document.body.bgColor='red'"});
chrome.tabs.insertCSS(
null,
{
code:"body{background:red;}"
}
);
alert("finishpage");
您不能从内容脚本调用chrome.tabs.*
API。你需要从背景页面开始。如果您需要在内容脚本和背景页面之间进行通信,则可以使用消息传递。
p。像"这让我觉得我的脚本可能在中间的某个地方崩溃了"这样的事情可以很容易地通过查看控制台来检查(对于内容脚本,它只是一个选项卡中的常规控制台,Ctrl+J
)。
"我想写一个Chrome扩展,只是添加一个CSS文件到页面的CSS定义的结束"
你可能需要添加!important
标志到你正在改变的css:
当浏览器显示一个HTTP页面,用户点击这个扩展的浏览器操作,扩展设置页面的bgcolor属性为'红色'。结果,除非页面有CSS来设置背景色,否则页面会变成红色。
…!important
标志是改变一些东西的唯一方法,但你可能不得不写js来覆盖其他样式,检查这个
正如serg所说,background.html页面是使用injectCSS api的地方:
/* in background.html */
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript(null,
{code:"document.body.bgColor='red'"});
});
/*in manifest.json */
"permissions": [
"tabs", "http://'*/*"
],
相关文章:
- chrome扩展中的navigator.geolocation.getCurrentPosition
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- chrome扩展更改主机/域警告
- 如何在chrome扩展中重定向到html页面
- Chrome扩展没有't在重新加载之前考虑期权价值
- 如何通过自己获得Chrome扩展的用户反馈/错误报告
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- 从选项页面更新chrome扩展清单权限
- 如何将chrome扩展功能移植到移动设备(特别是jquery和trello)
- Chrome扩展:遍历不同的页面并收集数据
- 未捕获的类型错误:无法读取属性'addEventListener'的null chrome扩展名
- 可以从Chrome扩展修改窗口对象吗
- 从popup.js|Chrome扩展访问DOM
- 从Chrome扩展名中的popup.html文件在background.js文件中运行一个函数
- 在Chrome扩展内部输出Google API调用
- 检查是否存在使用chrome扩展的javascript库
- 从Chrome扩展访问Google Cloud SQL数据库
- Chrome扩展,Chrome.tabs.query的结果未定义
- 为tweet构建chrome扩展
- 在chrome扩展中使用AJAX获取目录中的文件数