gpt4 book ai didi

javascript - 在插件 sdk 中使用 nsIFilePicker.modeGetFolder

转载 作者:行者123 更新时间:2023-11-28 01:54:13 25 4
gpt4 key购买 nike

我的插件创建了一个面板,其中显示插件当前选择的首选项。
我想用一个 button 填充 Panel,它的 onclick() 事件创建一个对话框,允许用户指定保存文件的目录在。
这对于基于 XUL 的插件来说是可能的,但相同的代码在基于 sdk 的插件中不起作用,因为 window 无法访问。
有什么方法可以解决这个问题吗?

在插件代码中,我使用以下命令创建 Panel:

var confirmDialog = require("sdk/panel").Panel({
width: 250,
height: 250,
contentURL: data.url("confirmDialog.html"),
});

confirmDialog.port.on("selectDir", function () {
chromeManager.selectDir();
});

confirmDialog.html 指定 Panel 的内容:

<div id="pathToFile"></div>
<button onclick="Panel.selectDir();">
</button>

confirmDialog.js 向插件代码发送消息:

var Panel = {

selectDir: function() {
addon.port.emit("selectDir", '');
}
};

chromeManager.js 是插件代码的一部分,因此它可以访问 sdk API。

exports.selectDir = function() {

var nsIFilePicker = Ci.nsIFilePicker,
fp = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker);

fp.init(window, nsIFilePicker.modeGetFolder);

var ret = fp.show();

if (ret == nsIFilePicker.returnOK || ret == nsIFilePicker.returnReplace) {
document.getElementById('pathToFile').value = fp.file.path;
}
}

但是,在运行此代码时,我收到 ReferenceError: window is not Defined ,有什么方法可以使 window 可以在此处访问,或者有其他方法吗?

最佳答案

您可以使用window/utils ,特别是 getMostRecentBrowserWindow(),获取对事件窗口的引用,以便与 nsIFilePicker API 一起使用。

关于javascript - 在插件 sdk 中使用 nsIFilePicker.modeGetFolder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19363281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com