1

Firefox Electrolysis のアドオンを作成しようとしています。e10s ウィンドウを開いてページ要素を右クリックすると、e10s ウィンドウで document.popupNode を使用できません。

var WindowListener = {
    setupBrowserUI: function(window) {
        //
    },
    tearDownBrowserUI: function(window) {
    },
    // nsIWindowMediatorListener functions
    onOpenWindow: function(xulWindow) {
        var domWindow = xulWindow.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
                                 .getInterface(Components.interfaces.nsIDOMWindow);
        // Wait for it to finish loading
        domWindow.addEventListener("load", function listener() {
            domWindow.removeEventListener("load", listener, false);
            // If this is a browser window then setup its UI      
            if (domWindow.document.documentElement.getAttribute("windowtype")=="navigator:browser") {

                domWindow.document.getElementById('contentAreaContextMenu').addEventListener("popupshowing", function(event){

                    let document=event.currentTarget.ownerDocument;
                    let prompts = Components.classes["@mozilla.org/embedcomp/prompt-service;1"].getService(Components.interfaces.nsIPromptService);
                    prompts.alert(null, "Test", document.popupNode);                    

                }, false);

            }

        }, false);
    },
    onCloseWindow: function(xulWindow) {
    },
    onWindowTitleChange: function(xulWindow, newTitle) {
    }
};

let wm = Components.classes["@mozilla.org/appshell/window-mediator;1"].
       getService(Components.interfaces.nsIWindowMediator);
// Wait for any new browser windows to open
wm.addListener(WindowListener);

Scratchpad でテスト コードを使用できます。テスト コードを実行した後、新しい通常の Firefox ウィンドウを開き、Web ページ内で右クリックします。document.popupNode のプロンプト アラートが表示されます。

しかし、新しい e10s Firefox ウィンドウを開いて右クリックしても、何も表示されません。

e10s ウィンドウで document.popupNode を取得するにはどうすればよいですか?

4

1 に答える 1

1

document.popupNodeXUL ドキュメントがノードで何もポップアップしなかったため、ありません。代わりに、子プロセスから、特定の画面座標にメニューを表示するように指示するメッセージを受け取りました。

代わりに、gContextMenu.targetから読み込まれた を使用しgContextMenuContentData.event.targetます。

gContextMenu.targetはすべてのブラウザ ウィンドウでgContextMenuContentData.event.target使用できますが、e10s ウィンドウでのみ使用できます。

もちろん、gContextMenuポップアップが表示されようとしている場合または表示されている場合にのみ有効です。

于 2014-07-25T12:48:19.033 に答える