自动将toolbarbutton安装到firefox导航栏,不使用insertItem
Automatically install toolbarbutton to firefox nav-bar, not working with insertItem
所以我已经阅读了我在MDN、stackoverflow等网站上能找到的几乎所有内容,但它们似乎都过时了和/或不起作用。问题是:
我想在安装扩展时自动将其"toolbarbutton"放在导航栏上,类似于Chrome。用户在那之后做什么取决于他们,尽管如果你删除了按钮(带有这个特定的扩展名),你也可以只删除扩展名,因为没有按钮是无用的。无论如何。。。
似乎有两种方法可以做到这一点。您可以将其附加到"currentSet"并使其持久化,如下所示:
var currentset = document.getElementById("nav-bar").currentSet;
currentset=currentset + ",MYBUTTON_ID";
document.getElementById("nav-bar").setAttribute("currentset",currentset);
document.getElementById("nav-bar").currentSet = currentset;
document.persist("nav-bar","currentset");
或者,您可以像这样使用"insertItem":
var toolbar = document.getElementById("nav-bar");
toolbar.insertItem("MYBUTTON_ID", null);
toolbar.setAttribute("currentset", toolbar.currentSet);
document.persist(toolbar.id, "currentset");
现在,如果我使用第一个方法,它是有效的,但由于某种原因,它完全删除了导航栏上的所有其他内容。当"currentSet"覆盖它时,它似乎没有其他导航栏按钮,所以我只得到了默认的导航栏和我的图标。删除用户的所有其他按钮是不好的。。。
第二个选项不会删除其他选项,但无论出于何种原因,"insertItem"的方法都根本不起作用。我的按钮从未出现在导航栏中,句号。
有什么想法吗?
好吧,就像我想的那样,我的代码没有任何问题,问题与我描述的完全一样。
当加载扩展并执行安装按钮的脚本时,操作完成得太早。在执行时,"currentSet"只包含默认按钮。尚未加载其他扩展按钮。因此,如果修改currentSet并保存(持久化)它,则会擦除所有其他按钮
(对我来说)解决方案是强制我的"安装"脚本等待更长的时间。我发现一旦页面被加载,所有其他按钮都有足够的时间出现。所以,我只是这么做了:
function installButton() {
var navbar = document.getElementById("nav-bar");
var newset = navbar.currentSet + ",MYBUTTONID";
navbar.currentSet = newset;
navbar.setAttribute("currentset", newset );
document.persist("nav-bar", "currentset");
}
window.addEventListener("load", function () { installButton(); }, false);
我用这段代码在navbar
中添加工具栏按钮,但这只适用于新安装的第一次,而不适用于下一次安装,即升级插件,因为用户可以将图标移动/拖动到不同的位置。因此,您需要在新的firefox配置文件中尝试此操作。这是代码:
//plcae toolbar icon
var navbar = document.getElementById("nav-bar");
var newset = navbar.currentSet + ",MYBUTTON_ID";
navbar.currentSet = newset;
navbar.setAttribute("currentset", newset );
document.persist("nav-bar", "currentset");
这是XUL Overlay的代码:
<toolbarpalette id="BrowserToolbarPalette">
<toolbarbutton id="MYBUTTON_ID" inserbefore="searchBar" class="toolbarbutton-1 chromeclass-toolbar-additional"
label="MYBUTTON_ID" tooltiptext="MYBUTTON_ID"
onclick="MYBUTTON_ID()"/>
</toolbarpalette>
或您可以违背用户意愿强制图标显示在导航栏中,这将在每次萤火虫重启后生效,但不建议
var navbar = document.getElementById("nav-bar");
var newset = navbar.currentSet;
if (newset.indexOf("MYBUTTON_ID") == -1)
{
if (newset.indexOf("reload-button,stop-button,") > -1)
newset = newset.replace("reload-button,stop-button,", "reload-button,stop-button,MYBUTTON_ID,");
else
newset = newset + ",MYBUTTON_ID";
navbar.currentSet = newset;
navbar.setAttribute("currentset", newset );
document.persist("nav-bar", "currentset");
}
- 单击顶部导航时如何进行向下滚动效果(向下滑动).
- angular 1.5应用程序中的导航栏
- 无法从jquery Mobile导航栏重定向到另一个页面
- 引导程序:在导航栏中,显示悬停在单个位置的基于Li Link的不同内容
- 导航到特定事件的另一个变量页面
- MVC 3页面导航和使用javascript传递参数
- 如何在react js中从一个页面导航到另一个页面
- 导航栏没有调整到浏览器屏幕的大小
- 显示放大镜弹出窗口时隐藏导航内容
- DataTable按下键选择扩展/导航
- 正在检测导航到<a name=“;最新主题”></a>
- 带有url的单页网站导航
- 父页面的角度路由器导航高亮显示
- 如何正确编程jQuery动画与平滑(导航栏)
- 动态更改'汉堡包'导航取决于BG图像
- 使用导航属性创建Kendo UI网格模型的问题
- Flexslider导航按钮在悬停时不可见,带有橙色框
- 离开页面导航后保留文本区域内容
- 当主导航离开视图时,为粘性导航应用样式
- 自动将toolbarbutton安装到firefox导航栏,不使用insertItem