Javascript 使用附加SDK更改选项卡的样式
我正在尝试使用附加SDK动态更改选项卡的样式。我该怎么做 以下是我尝试过的: 我可以访问如下选项卡对象:Javascript 使用附加SDK更改选项卡的样式,javascript,css,firefox,firefox-addon,firefox-addon-sdk,Javascript,Css,Firefox,Firefox Addon,Firefox Addon Sdk,我正在尝试使用附加SDK动态更改选项卡的样式。我该怎么做 以下是我尝试过的: 我可以访问如下选项卡对象: var tabs=require('sdk/tabs'); tabs.on('ready',function(tab){ console.log('url is: '+tab.url); //-> url is http://www.google.com console.log('stlye is: '+tab.url); //-> style is null });
var tabs=require('sdk/tabs');
tabs.on('ready',function(tab){
console.log('url is: '+tab.url); //-> url is http://www.google.com
console.log('stlye is: '+tab.url); //-> style is null
});
但是style属性为null
,并且没有以下工作:
tab.setAttribute('style','background-color:blue'); // the method doesn't exist
tab.style.backgroundColor='blue'; // type error because style is null
tab.style='background-color:blue'; // has no effect
那么,如何动态更改选项卡的样式呢?我尝试过的另一件事是使用以下命令将选项卡转换为XUL对象:
但是代码抛出了一个错误:在中找不到模块“sdk/model/core”resource://gre/modules/commonjs/sdk/model/core.js
尽管我按照说明创建了core.js文件。另外,我不理解大括号在
var{modelFor}=
语法中的作用。您需要访问xul tab元素
试试这个:
var tabsLib = require("tabs/tab.js");
var tab = tabsLib.getTabForWindow(htmlWindow);
tab.style.color = 'red'; //makes the tab text red
将htmlWindow
作为html文档的最顶部窗口传递。比如document.defaultView.top
<代码>文档。默认视图是文档的窗口
如果这不起作用,那么只获取浏览器窗口,本例获取最新的浏览器窗口(请记住,可能有多个浏览器窗口处于打开状态(浏览器窗口是一个具有选项卡的firefox窗口,[可能还有弹出窗口-我在sdk中不确定])
const{getMostRecentBrowserWindow}=require('sdk/window/utils');
var aDOMWindow=getMostRecentBrowserWindow();
if(aDOMWindow.gBrowser&&aDOMWindow.gBrowser.tabContainer){
var tabs=aDOMWindow.gBrowser.tabContainer.childNodes;
for(var i=0;谢谢你!我真的很感谢你的帮助,很快就会尝试你的解决方案。你能解释一下const{getMostRecentBrowserWindow}=/code>语法吗?花括号做什么?它是ES6解构吗?const
只是一个var
,在那行之后不能更改。是的,花括号和等于的意思是,“在require('sdk/window/utils')
的对象中查找getMostRecentBrowserWindow
,并将其带到您的范围内,带到您的const
或var
“。如果对象中没有getMostRecentWindow
,它将不起作用。第二个代码块工作得很好。第一个代码块不起作用,因为htmlWindow
未定义,但可能我误解了。这太好了!谢谢你。
var tabsLib = require("tabs/tab.js");
var tab = tabsLib.getTabForWindow(htmlWindow);
tab.style.color = 'red'; //makes the tab text red
const { getMostRecentBrowserWindow } = require('sdk/window/utils');
var aDOMWindow = getMostRecentBrowserWindow();
if (aDOMWindow.gBrowser && aDOMWindow.gBrowser.tabContainer) {
var tabs = aDOMWindow.gBrowser.tabContainer.childNodes;
for (var i=0; i<tabs.length; i++) {
tabs[i].style.color = 'red'; //makes the tab text red;
}
}