【发布时间】:2014-06-05 02:50:40
【问题描述】:
我的扩展程序在新的 FF 选项卡中打开。我希望在选项卡处于活动状态时隐藏所有工具栏(除了选项卡栏)。 我想要的是标准 FF 插件选项卡的工作方式(工具->插件)。
【问题讨论】:
标签: javascript firefox firefox-addon xul
我的扩展程序在新的 FF 选项卡中打开。我希望在选项卡处于活动状态时隐藏所有工具栏(除了选项卡栏)。 我想要的是标准 FF 插件选项卡的工作方式(工具->插件)。
【问题讨论】:
标签: javascript firefox firefox-addon xul
将此代码复制粘贴到浏览器环境的暂存器中并运行它:
Cu.import('resource://gre/modules/Services.jsm');
var sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService);
try {
sss.unregisterSheet(cssUri, sss.USER_SHEET);
} catch (ex) {}
var css = '';
css += 'toolbar { display: none }';
var cssEnc = encodeURIComponent(css);
var newURIParam = {
aURL: 'data:text/css,' + cssEnc,
aOriginCharset: null,
aBaseURI: null
}
var cssUri = Services.io.newURI(newURIParam.aURL, newURIParam.aOriginCharset, newURIParam.aBaseURI);
sss.loadAndRegisterSheet(cssUri, sss.USER_SHEET);
删除只需运行sss.unregisterSheet(cssUri, sss.USER_SHEET);
【讨论】:
try 语句,当您想要删除它时,只需使用 unregister 部分。虽然这会影响所有窗口,而不仅仅是那个窗口。您可能只想将 css 加载到当前窗口中。如果是这种情况,请告诉我,我会告诉你loadSheet 方法。
你没有写你正在开发什么样的扩展...... SDK 或 XUL。
在 XUL 扩展中,首先获取所有工具栏,然后根据您的意愿设置collapsed。
这是一些相同的代码。
function toggleToolbars() {
// First get all toolbars (that are not the tab bar)
var tbs = Array.filter(document.querySelectorAll('toolbar'), function (x) {
return x.id != 'TabsToolbar';
});
// For each toolbar
for (var tb of tbs) {
// Either un-collapse if we collapsed it.
if (tb.getAttribute('my-addon-collapsed')) {
tb.removeAttribute('collapsed');
tb.removeAttribute('my-addon-collapsed');
}
// Or collapse other-wise, if not already collapsed
else if (!tb.getAttribute('collapsed')) {
tb.setAttribute('collapsed', 'true');
tb.setAttribute('my-addon-collapsed', 'true');
}
}
}
您可能希望修复代码以处理极端情况,例如用户手动恢复工具栏、其他插件稍后添加全新的工具栏等等。
在 SDK 插件中,您需要首先访问实际的 browser.xul 窗口。我确定如何做到这一点已经在 SO 上。
【讨论】: