IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Récupérer les données hors de onload


Sujet :

jQuery

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 171
    Points : 64
    Points
    64
    Par défaut Récupérer les données hors de onload
    Bonjour,

    Je veux prévisualiser une image avant l'upload, du coup, je veux récupérer quelques informations et les vérifier avant de passer au transfert, parmi ces informations, sont les dimensions, j'ai pris ce code du net, et je veux le développer pour retourner les informations en array:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
     
    	function imageFileDims(fileID){
     
    	var _URL = window.URL || window.webkitURL;   
      	var file, img, fileWidth, fileHeight, dims=[];
     
        file = $('#'+fileID)[0].files[0];
     
        img = new Image();
     
        img.onload = function(data) {
                     fileWidth   = this.width;
                     fileHeight  = this.height;
     
                    dims.push(fileWidth);
                    dims.push(fileHeight);
     
                    console.log(dims);
     
    // les élément à retourner
     
         return [fileWidth, fileHeight];
     
                };
     
    // le résultat est [] null	
    console.log(dims);
     
                img.src = _URL.createObjectURL(file);
                console.log(img.onload());            
      }
     
    $("#file-input1").change(function(e) {
        imageFileDims("file-input1");
    });
    Merci a vous

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 955
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 955
    Points : 44 103
    Points
    44 103
    Par défaut
    Bonjour,
    ... je veux le développer pour retourner les informations en array:
    les retourner à qui ?

    Les données n'étant disponibles qu'un fois l'image chargée il te faut les utiliser à ce moment là et pas ailleurs.

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 171
    Points : 64
    Points
    64
    Par défaut
    Je veux les récupérer au sein de la fonction imageFileDims(fileID), mais hors de img.onload = function(data) {

    Autrement dit: transmettre les valeur width et height de img.onload = function(data) { vers l'exterieur

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 955
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 955
    Points : 44 103
    Points
    44 103
    Par défaut
    mais hors de img.onload = function(data) {
    tu es bien obligé de passer par cette étape !

    Tu peux poursuivre de la façon suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    img.onload = function(){
      // tu fais ce que tu veux avec les données
      // ...
      // puis tu appelles une fonction de traitement
      fct_transfert( data);  // par exemple
    }

  5. #5
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 171
    Points : 64
    Points
    64
    Par défaut
    Si j'ai bien compris:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    img.onload = function(){
     
     
    function getData(){
                    var dW	= fileWidth;
                    var dH	= fileHeight;
     
                    return [dW, dH];
                    }
     
     
    } // end onload
     
    console.log(getData);
    Celle la retourne undefined function getData

  6. #6
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 955
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 955
    Points : 44 103
    Points
    44 103
    Par défaut
    Celle la retourne undefined function getData
    normal, ta fonction n'est pas connu en dehors du scope de la fonction anonyme affectée au onload de ton image.

    Indente correctement tes codes pour une meilleur visibilté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    img.onload = function () {
        function getData() {
            var dW = fileWidth;
            var dH = fileHeight;
            return [dW,
            dH];
        }
    } // end onload
     
    console.log(getData);
    mais à quoi peut bien te servir cette fonction incluse, es tu sûr d'en avoir besoin ?

  7. #7
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 171
    Points : 64
    Points
    64
    Par défaut
    Comment puis je traiter les dimensions côté client, avant d'envoyer les données au serveur en utilisant une fonction de traitement?

  8. #8
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 955
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 955
    Points : 44 103
    Points
    44 103
    Par défaut
    Comment puis je traiter les dimensions côté client, ...
    comme dit avant directement dans ta fonction anonyme mis sur le onload ou en faisant appel à une fonction externe en lui passant les données.

    Je pense qu'il y a quelque chose qui doit m'échapper sur ce que tu cherches à faire !

  9. #9
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 171
    Points : 64
    Points
    64
    Par défaut
    Voici un petit exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    img.onload = function () {
     
    // code ici
     
            return [dW,  dH];
        } // end onload
    Là je récupère le width et height de l'image, que je veux utiliser dans une autre fonction extérieur afin de les traiter:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    function checkImage(file){
     
    var imageWidth = // les valeurs que j'ai récupéré de la fonction onload
    var imageHeight = // les valeurs que j'ai récupéré de la fonction onload
     
    var imageSize = xxx
    var imageExt = yyyy
     
    if(imageWidth < 100){
     
    }
     
    if(imageHeight< 100){
     
    }
     
    if(imageSize > 1000000){
     
    }
     
    // ainsi de suite
     
    }

  10. #10
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 405
    Points : 4 841
    Points
    4 841
    Par défaut
    bonjour,
    je ne sais pas pourquoi tu es obligé de passer par onload alors que onchange est parfaite.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    imageFileDims=function(image){
    return [image[0].files[0].size/1024,image[0].files[0].name,image[0].files[0].type]
    }
    $("#img").on('change',function(){
    console.log("Size :"+imageFileDims($(this))[0]+" Ko,"+" Name :"+imageFileDims($(this))[1]+", Type :"+imageFileDims($(this))[2]);
    });
    j'ai raté quelque chose peut être?

  11. #11
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 171
    Points : 64
    Points
    64
    Par défaut
    @Toufik83: Je n'ai pas encore testé votre code, mais du coup que les valeurs retournées sont de l'image précédente et non pas de l'image courante, voici la DEMO

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/01/2006, 12h33
  2. XMLHttpRequest : Impossible de récupérer les données
    Par laurent_ifips dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 22/11/2005, 13h28
  3. [](VB) Récupérer les données dans un fichier .xml
    Par Furius dans le forum VBScript
    Réponses: 4
    Dernier message: 02/10/2005, 20h39
  4. Récupérer les données interbase dans une TStringGrid
    Par Ousse dans le forum Bases de données
    Réponses: 1
    Dernier message: 24/03/2005, 12h51
  5. Récupérer les données d'une iframe
    Par juli1 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 09/02/2005, 22h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo