Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# glissé déposé d'images

Envoyé par : Utilisateur anonyme

Date : 30/07/2005 14:30

Bonjour, J'utilise le glissé déposé pour sélectionner les image à envoyer au devellopement via internet. quand l'image est simplement dans une balise img dans la page tout va bien le glissé deposé me renvoit l'URL de l'image, parfait. Mais si l'image est dans un liens (<a ...><img ...></a>) le glissé/déposé me renvoit le liens et ça par contre j'en veux pas ...

Comment m'assurer que je recoit le src de l'image quand celle-ci est encadré par un lien? sachant que la source c'est le content du navigateur :/

Damien l'élément destination :

<listbox id="images" flex="1"
  ondragover="nsDragAndDrop.dragOver(event,listObserver)"
  ondragdrop="nsDragAndDrop.drop(event,listObserver)">
</listbox>

le code du listener de l'élément liste qui recoit le drag&drop:

//gestion du glissé déposé
var listObserver = {
  getSupportedFlavours : function () {
    var flavours = new FlavourSet();
    flavours.appendFlavour("text/unicode");
    return flavours;
  },

  onDragOver: function (evt,flavour,session){},
    onDrop: function (evt,dropdata,session){
    if (basename(dropdata.data) != '') {
      url = dropdata.data.split("\n")[0]; //renvois aussi le "alt" de l'image
      try {
        const nsIWBP = Components.interfaces.nsIWebBrowserPersist;
        //création d'un fichier temporaire unique
        var dest = Components.classes["@mozilla.org/file/directory_service;1"]
          .getService(Components.interfaces.nsIProperties)
          .get("TmpD", Components.interfaces.nsIFile);

        dest.append(basename(url));
        dest.createUnique(dest.NORMAL_FILE_TYPE, 0664);

        // set up source
        var uri = Components.classes['@mozilla.org/network/standard-url;1']
         .createInstance(Components.interfaces.nsIURI);
       uri.spec = url;

       var persist = Components.classes["@mozilla.org/embedding/browser/nsWebBrowserPersist;1"]
         .createInstance(Components.interfaces.nsIWebBrowserPersist);
       var flags = nsIWBP.PERSIST_FLAGS_NO_CONVERSION | 
         nsIWBP.PERSIST_FLAGS_REPLACE_EXISTING_FILES | 
         nsIWBP.PERSIST_FLAGS_BYPASS_CACHE;
       persist.persistFlags = flags;
       persist.saveURI(uri, null, null, null, null, dest);

       //ajout dans la liste.
       li = document.createElement('listitem');
       li.setAttribute('label',basename(url));
       li.setAttribute('value',dest.path);
       li.setAttribute('id',"File" + n);
       n ++;
       document.getElementById('images').appendChild(li);
     }
     catch (e) {
       log(e.name + " : " + e.message);
     }
    }
  }
}

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.