Полезная информация

Общайтесь со знакомыми и друзьями в нашем сообществе в Facebook.

№119-08-2010 03:25:11

Zeiss
Участник
 
Группа: Members
Откуда: Киев
Зарегистрирован: 28-01-2010
Сообщений: 7
UA: IE 7.0

Drag and Drop из Firefox на десктоп

Надо реализовать 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-"

Спасибо

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]