>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Как открыть стандартный диалог сохранения файла? http://forum.mozilla-russia.org/viewtopic.php?id=64882 |
fireday2 > 10-09-2014 21:32:09 |
Всем доброго времени суток Учусь писать плагины url файла и его имя есть, нужно открыть стандартный диалог сохранения файла Выделить код Код:function download(url, name) { var link = document.createElement("a"); link.download = name; link.href = url; link.click(); } не работает Выделить код Код:pageMod.PageMod({ include: "https://vk.com/*", contentScriptFile: [self.data.url("jquery.js"), self.data.url("VKdownload.js")] }); плагин собираю с помощью cfx помогите открыть стандартный файловый диалог |
fireday2 > 16-09-2014 20:02:59 |
Подсказали код (спасибо Michael72): Выделить код Код:function InputFileName(filename='') { var utils = require('sdk/window/utils'); var nsIFilePicker = Ci.nsIFilePicker; var fp = Cc['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker); fp.init(utils.getMostRecentBrowserWindow(), 'Сохранить файл', nsIFilePicker.modeSave); fp.appendFilter('mp3','*.mp3'); fp.defaultString = filename; var fp_result = fp.show(); if (fp_result == nsIFilePicker.returnOK || fp_result == nsIFilePicker.returnReplace) { var path = fp.file.path; return path; } else if (fp_result == nsIFilePicker.returnCancel) { return 'cancel'; } } Более подробно тут https://developer.mozilla.org/en-US/doc … FilePicker // код тестировал в lib\main.js |
Michael72 > 16-09-2014 20:49:01 |
Вроде бы здесь есть какой-то ответ на проблему в виде сообщения "window is not defined". Пишется, что надо использовать nsIWindowMediator. Я бы попробовал заменить window (см. строку 4 в коде) на Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator) |
fireday2 > 16-09-2014 20:55:07 |
Michael72, спасибо большое, разобрался с вызовом из main.js, Теперь вопрос: как вызвать функцию в "myplugin\lib\main.js" из скриптов расположенных в "myplugin\data\" ? В плагинах под chromium была конструкция: Выделить код Код:chrome.extension.onRequest.addListener(function (request, sender, callback) { var action = request.action; if (action == 'download_from_vk') { chrome.downloads.download({ url: request.url, saveAs: false, filename: request.name }); returnMessage(request.message); } } Из локальных (под каждую страницу свой) скриптов обращался к функции так Нужен аналогичный код для firefox |
fireday2 > 24-09-2014 19:40:03 |
Разобрался Для общения между скриптами, например lib\main.js и data\my-script.js |