2014-10-09 44 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

相關問題