2014-10-09 53 views
0

我在浏览器中工具箱看到的是:browser toolbox为什么xul覆盖创建2个ID,而不是组合?

我认为这将我覆盖结合使用相同的ID - 为什么它会创建两个具有相同的ID?

<?xml version="1.0" encoding="utf-8"?> 
<overlay id="dtInspectorOverlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> 
<popupset id="inspectorPopupSet"> 
    <menupopup id="inspector-node-popup"> 
    <!-- <menuitem id="node-menu-edititem" 
      label="Edit HTML" 
      accesskey="E" 
      oncommand="dt.editHtml()" 
      position="1"/>--> 
     <menuseparator position="2"/> 
     <menuitem id="node-menu-setA" 
      label="Set Node A" 
      accesskey="A" 
      oncommand="dt.setA()" 
      position="3"/> 
     <menuitem id="node-menu-setB" 
      label="Set Node B and Compare" 
      accesskey="B" 
      oncommand="dt.setB()" 
      position="4"/> 
     <menuseparator position="5"/> 

    </menupopup> 
    <menupopup id="rule-view-context-menu"> 
     <!--<menuitem label="Copy Selection" accesskey="C" oncommand="dt.copySelection()"/>--> 
     <menuitem position="4" id="dtCSSCOPYURL" label="Copy URL" accesskey="U" oncommand="dt.urlCopy()" /> 
     <menuitem position="5" id="dtCSSOPENURL" label="Open URL in New Tab" accesskey="O" oncommand="dt.urlOpen()"/> 
     <!--<menuitem label="New Rule..." accesskey="N" oncommand="dt.newRule()"/>--> 
    </menupopup> 
</popupset> 

<script src="chrome://devtooltweaks/content/lib/FlexiColorPicker.js"></script> 
<script src="chrome://devtooltweaks/content/inspectorTweaks.js"></script> 
</overlay> 

源代码here

+0

你覆盖'铬://浏览器/内容/ devtools /检查/ inspector.xul'? – paa 2014-10-09 10:10:03

+0

是的。源代码[here](https://github.com/programmin1/DevTools-Tweaks) – NoBugs 2014-10-10 00:38:21

回答

0

我相信你已经完成了这项工作,但inspector.xul是动态生成的。这意味着,在覆盖层应用后,devtools代码会附加一个新的menupopup(您可以看到第二个)。

相反,你需要做这样的事情:

cssInspectorOverlay.xul

<?xml version="1.0" encoding="utf-8"?> 
<overlay id="cssInspectorOverlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> 
<script type="text/javascript" src="chrome://devtooltweaks/content/cssInspectorOverlay.js"></script> 
</overlay> 

cssInspectorOverlay.js

window.addEventListener('load',function(evt) { 
    const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; 

    function createMenuItem(aMenu, aAttributes) { 
    let item = aMenu.ownerDocument.createElementNS(XUL_NS, "menuitem"); 

    item.setAttribute("label", aAttributes.label); 
    item.setAttribute("accesskey", aAttributes.accesskey); 
    item.addEventListener("command", aAttributes.command); 
    aMenu.appendChild(item); 

    return item; 
    } 

    ... 

    // Add menu items and custom using JavaScript here. 
} 
+0

谢谢!因此,我们总是使用xul来扩展代码,不能像CSS那样添加元素吗?这很有趣,我希望在devtools中有一些关于如何扩展这些的文档:) – NoBugs 2014-10-28 01:58:35