使用文件保存带有Firefox插件的网页 - >保存为弹出窗口

时间:2015-07-23 16:53:23

标签: javascript firefox save firefox-addon firefox-addon-sdk

首先我要说的是我是附加开发的新手。使用附加SDK,我试图创建一个简单的Firefox附加组件,当按下按钮时,就像按下Ctrl-S热键或跟随文件一样 - >保存页面以获取保存页面弹出窗口。我在这里看了类似的问题,但它们似乎围绕内置的保存功能,而不是使用“保存页面”窗口。

最终目标是在进行保存调用之前运行其他功能。用户只能正常看到保存页面窗口。

我不知道如何发送热键信号,或从附件中访问文件下拉菜单。

1 个答案:

答案 0 :(得分:1)

执行此操作的一种方法是完全调用另存为对话框,就像用户单击“将页面另存为...”菜单项(id="menu_savePage")一样。您可以通过执行该菜单项的doCommand()方法来完成此操作。以下假设传入的event是用户点击的按钮的command事件。

function launchSaveAsFromButton(event) {

    var window = event.view;

    //Create some common variables if they do not exist.
    //  This should work from any Firefox context.
    //  Depending on the context in which the function is being run,
    //  this could be simplified.
    if (window === null || typeof window !== "object") {
        //If you do not already have a window reference, you need to obtain one:
        //  Add a "/" to un-comment the code appropriate for your add-on type.
        //* Add-on SDK:
        var window = require('sdk/window/utils').getMostRecentBrowserWindow();
        //*/
        /* Overlay and bootstrap (from almost any context/scope):
        var window=Components.classes["@mozilla.org/appshell/window-mediator;1"]
                             .getService(Components.interfaces.nsIWindowMediator)
                             .getMostRecentWindow("navigator:browser");
        //*/
    }
    if (typeof document === "undefined") {
        //If there is no document defined, get it
        var document = window.content.document;
    }
    if (typeof gBrowser === "undefined") {
        //If there is no gBrowser defined, get it
        var gBrowser = window.gBrowser;
    }

    let menuSavePage = gBrowser.ownerDocument.getElementById("menu_savePage");
    menuSavePage.doCommand();
}

DOM Inspector与加载项Element Inspector结合使用,可以更轻松地找到“将页面另存为...”对话框的ID。