0

我在浏览器工具箱中看到了这个:浏览器工具箱

我认为它会将我的叠加层与相同的 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>

源代码在这里

4

1 回答 1

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.
}
于 2014-10-27T10:50:32.630 回答