ara*_*nku 1 google-chrome-extension
我想在没有内容脚本的页面中添加自定义样式表.我的CSS没问题,但下面的代码,使用onUpdated
和onCreated
事件监听器不起作用.
部分manifest.json
:
"permissions": [
"http://www.site_domain.com/*",
"tabs"],
Run Code Online (Sandbox Code Playgroud)
background.html:
chrome.tabs.onUpdated.addListener(function (tab) {
var tabUrl = tab.url;
if (tabUrl.indexOf("site_domain") != -1) {
changeBgkColor();
}
});
chrome.tabs.onCreated.addListener(function (tab) {
var tabUrl = tab.url;
if (tabUrl.indexOf("site_domain") != -1) {
changeBgkColor();
}
});
function changeBgkColor(){
chrome.tabs.insertCSS(null, {file:"css/styles.css"})
};
Run Code Online (Sandbox Code Playgroud)
chrome.tabs.onCreate
必须替换chrome.tabs.onCreated
(使用广告!).
修复此问题后,您最好tabId
将chrome.tabs.insertCSS
方法传递给该方法.此外,通过合并事件侦听器来减少代码重复:
chrome.tabs.onCreated.addListener(do_something);
chrome.tabs.onUpdated.addListener(function(tabId, info, tab) {
if (info.status == 'complete') do_something(tab);
});
function do_something(tab) {
var tabUrl = tab.url;
if (tabUrl && tabUrl.indexOf("site_domain") != -1) {
// changeBgkColour() here:
chrome.tabs.insertCSS(tab.id, {
file: "css/styles.css"
});
}
}
Run Code Online (Sandbox Code Playgroud)
由于在创建选项卡后立即调用这些事件.每个规则可能必须足够!important
,以防止规则被页面上的样式表覆盖.
根据文档onCreated
,url
当事件被触发时可能不会设置属性,因此添加tabUrl &&
条件,以防止可能的错误.
此外,您的域名检查不足..indexOf('google.com')
也会匹配http://stackoverflow.com/q/x/what-is-google.com?
.
归档时间: |
|
查看次数: |
6671 次 |
最近记录: |