Страницы: 1
Надо реализовать DND ссылки из Firefox в систему (проводник) таким образом, чтобы вместо брошенного ярлыка, в каталог скачивался файл, на который указывает ссылка.
Так цепляюсь на событие dragstart ссылок:
links.bind("dragstart", function(evt) { var link = $(this), href = link.attr("href"), name = link.text() + " (" + link.attr("version") + ")." + link.attr("ext"); log("Start: " + name + " (" + href + ")"); var domE = evt.originalEvent, trans = domE.dataTransfer; trans.mozSetDataAt("application/x-moz-file-promise-url", href, 0); trans.mozSetDataAt("application/x-moz-file-promise", new dragFileProvider(), 0, _CI.nsISupports); trans.mozSetDataAt("text/x-moz-url", href + "\n" + name, 0); // trans.mozSetDataAt("text/x-moz-url-data", href, 0); // trans.mozSetDataAt("text/x-moz-url-desc", name, 0); trans.setData('text/plain', name + " (" + href + ")"); enumTypes(trans); })
Вот флейвор дата провайдер:
var dragFileProvider = function() { this.QueryInterface = function(iid) { log("dpQI: " + iid); if (iid.equals(_CI.nsIFlavorDataProvider) || iid.equals(_CI.nsIFormatConverter) || iid.equals(_CI.nsISupports)) { return this; } throw _CR.NS_NOINTERFACE; }; /** * nsIFlavorDataProvider */ this.getFlavorData = function(aTransferable, aFlavor, aData, aDataLen) { log("dp.getFlavorData: " + aFlavor); if (aFlavor == 'application/x-moz-file-promise') {
Метод getFlavorData провайдера ни разу не дергается.
У самого провайдера спрашивается интерфейс nsIFormatConverter (948a0023-e3a7-11d2-96cf-0060b0fb9956), потом вызывается getOutputDataFlavors (я не знаю, что из чего надо ковнвертировать), после чего, похоже, всё падает, и в проводнике, где брошена ссылка, ничего не появляется.
Расскажите, кто знает, как воплотить желаемое?
И где, если есть, детальная информация о флейворах "-promise-"
Спасибо
Отсутствует
Страницы: 1