【问题标题】:How can I create a Firebug-like bottom window Firefox extension如何创建类似 Firebug 的底部窗口 Firefox 扩展
【发布时间】:2008-10-06 13:17:18
【问题描述】:

一些扩展程序提供了一个“底部窗口”来查看其内容。 Firebug 和 ScribeFire 是主要内容出现在浏览器底部的很好的例子。这似乎与浏览器中的侧边栏功能非常相似。

由于浏览器没有“底部侧边栏”,是否有在扩展程序中创建底部窗口的最佳实践/方法?

【问题讨论】:

    标签: firefox firefox-addon xul


    【解决方案1】:

    您将使用 Overlay 创建您的扩展 UI。在叠加层中,您可以指定 UI 相对于主浏览器页面 browser.xul 的插入点。

    摘自 Firefox 的主页 browser.xul 我们有

    <vbox id="appcontent" flex="1">
        <tabbrowser id="content" disablehistory="true"
                    flex="1" contenttooltip="aHTMLTooltip"
                    contentcontextmenu="contentAreaContextMenu"
                    onnewtab="BrowserOpenTab();"
                    autocompletepopup="PopupAutoComplete"
                    ondragdrop="nsDragAndDrop.drop(event, contentAreaDNDObserver);"
                    onclick="return contentAreaClick(event, false);"
                    />
      </vbox>
    

    摘自之前版本的 Firebug 文件 browserOverlay.xul 我们拥有

    <vbox id="appcontent">
        <splitter id="fbContentSplitter" collapsed="true"/>
        <vbox id="fbContentBox" collapsed="true" persist="height">
            <toolbox id="fbToolbox">
                <toolbar id="fbToolbar">
                    <toolbarbutton id="fbFirebugMenu" type="menu">
                        <menupopup onpopupshowing="return FirebugChrome.onOptionsShowing(this);">
                            <menuitem label="&firebug.DisableFirebug;" type="checkbox"
                                      oncommand="FirebugChrome.onToggleOption(this)" option="disabledAlways"/>
                            <menuitem type="checkbox"
                                      oncommand="FirebugChrome.onToggleOption(this)" option="disabledForSite"/>
                            <menuitem label="&firebug.AllowedSites;" command="cmd_openFirebugPermissions"/>
                            <menuseparator/>
    
                            <menu label="&firebug.TextSize;">
                                <menupopup>
                                    <menuitem label="&firebug.IncreaseTextSize;"
                                              oncommand="Firebug.increaseTextSize(1)"/>
                                    <menuitem label="&firebug.DecreaseTextSize;"
                                              oncommand="Firebug.increaseTextSize(-1)"/>
                                    <menuitem label="&firebug.NormalTextSize;" oncommand="Firebug.setTextSize(0)"/>
                                </menupopup>
                            </menu>
    
                            <menu label="&firebug.Options;">
                                <menupopup onpopupshowing="return FirebugChrome.onOptionsShowing(this);">
                                    <menuitem type="checkbox" label="&firebug.AlwaysOpenInWindow;"
                                               oncommand="FirebugChrome.onToggleOption(this)"
                                               option="openInWindow"/>
    
                                    <menuitem type="checkbox" label="&firebug.ShowTooltips;"
                                               oncommand="FirebugChrome.onToggleOption(this)"
                                               option="showInfoTips"/>
    
                                    <menuitem type="checkbox" label="&firebug.ShadeBoxModel;"
                                              oncommand="FirebugChrome.onToggleOption(this)"
                                              option="shadeBoxModel"/>
                                </menupopup>
                            </menu>
                            <menuseparator/>
    
                            <menuitem label="&firebug.Website;" oncommand="Firebug.visitWebsite('main')"/>
                            <menuitem label="&firebug.Documentation;" oncommand="Firebug.visitWebsite('docs')"/>
                            <menuitem label="&firebug.Forums;" oncommand="Firebug.visitWebsite('discuss')"/>
                            <menuseparator/>
                            <menuitem label="&firebug.Donate;" oncommand="Firebug.visitWebsite('donate')"/>
                        </menupopup>
                    </toolbarbutton>
    
                    <toolbarbutton id="fbDetachButton" class="toolbarbutton-iconic"
                                   tooltiptext="&firebug.DetachFirebug;" command="cmd_detachFirebug"/>
    
                    <toolbarbutton id="fbCloseButton" class="toolbarbutton-iconic"
                                   tooltiptext="&firebug.CloseFirebug;" command="cmd_toggleFirebug"/>
                </toolbar>
            </toolbox>
    
            <hbox id="fbPanelBox" flex="1"/>
            <hbox id="fbCommandBox"/>
        </vbox>
    </vbox>
    

    请注意,两个 XUL 标记块都以

    开头
    <vbox id="appcontent".../>
    

    这是 Gecko 引擎用来确定叠加如何与被叠加的页面相匹配的方法。如果您查看 browserOverlay.xul,您还会看到 commandset, statusbar 等的其他插入点。

    有关详细信息,请参阅Mozilla Developer Center

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-30
      • 1970-01-01
      • 1970-01-01
      • 2023-02-26
      相关资源
      最近更新 更多