FireFox插件制作工具栏图标消失

时间:2010-12-24 12:12:12

标签: javascript firefox-addon xul manifest toolbar

我刚刚完成了我的第一个FF附加组件。 但安装完成后,它会使现有的工具栏图标消失。

这是我的chrome.manifest文件的样子。

content myext content/ 
overlay chrome://browser/content/browser.xul    chrome://myext/content/overlay.xul
locale  myext   en-US   locale/en-US/
skin    myext   classic/1.0 skin/
style       chrome://browser/content/browser.xul chrome://myext/skin/overlay.css
style chrome://global/content/customizeToolbar.xul chrome://myext/skin/overlay.css

为什么会发生这种情况?

如果我需要发布更多文件的内容,请告诉我。

由于

编辑: overlay.xul>

<?xml version="1.0"?> 
<?xml-stylesheet href="chrome://myext/skin/overlay.css" type="text/css"?> 
<!DOCTYPE overlay SYSTEM "chrome://myext/locale/overlay.dtd"> 
<overlay id="myext-overlay" 
    xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> 

    <script src="loader.js"/>
    <script src='jquery.js'/>
    <script src="overlay.js"/>
    <script src="jquery.cookie.js"/>
    <script src="Jquery-ui.js"/>
    <script src="json2.js"/>
    <script src="script.js"/>


    <statusbar id="status-bar">
      <statusbarpanel role="button"
                        onmouseup="KH.bind_btn_click()"
                        tooltiptext="myext">
            <image src="chrome://myext/skin/icon.png" />
        </statusbarpanel>
    </statusbar>

</overlay> 

Dir结构&gt;

/content
    overlay.xul
    [otehr js files]
/locale
/skin
/chrome/manifest
/install.rdf

2 个答案:

答案 0 :(得分:1)

你的一些javascript文件正在破坏Firefox。

Firefox插件上的命名空间是全局的,这意味着如果您使用已存在的某些内容的名称,则会导致冲突。这是一篇关于Global Namespace polution的博文。

在这里,您可以找到create namespaces for you addon的简单文章。

答案 1 :(得分:0)

如果您的脚本在加载事件触发之前尝试访问DOM,那么这将在重叠加载完成之前触发受影响节点上的XBL绑定。特别是当工具栏XBL绑定时,它会尝试恢复自定义工具栏配置,但是为了使其工作,需要加载所有叠加层,以便按钮在调色板中全部可用。在工具栏的特定情况下,Firefox 4中会有一个解决方法,但一般情况下,您仍应避免在加载事件之前访问DOM。