>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Drag and Drop из Firefox на десктоп http://forum.mozilla-russia.org/viewtopic.php?id=45690 |
Zeiss > 19-08-2010 03:25:11 |
Надо реализовать 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 провайдера ни разу не дергается. Расскажите, кто знает, как воплотить желаемое? Спасибо |