input file et javascript

le lundi 5 février 2007

Voulant développer un file uploader simple et compatible, je me suis penché sur les spécifications du input type file et de ses différences suivant les navigateurs.

On remarque tout d’habord qu’aucun d’eux ne respecte le W3C et sur plusieur point :

  • Ce dernier dit que l’on peut prédéfinir le fichier à uploadé en attribuant un chemin dans la propriété « value ». Ni Opera, ni FireFox, ni meme IE ne le fait. Cela est compréhensible, c’est une question de sécurité.
  • En ce qui concerne FireFox et Opera, la méthode click() d’un input file n’a aucun éffet… vous ne pourrez donc pas lancez la fenetre de selection de fichier à l’aide d’un lien simple. Il faut impérativement que l’utilisateur click sur le bouton « Parcourir… » du input file pour pouvoir selectionner un fichier. Ce qui limite énormément les possibilités !!! D’autant plus que cela ne me semble pas justifié : il faudrait une sacré chance pour que l’utilisateur click par le plus grand des hazard inintentionnellement sur un fichier puis sur « ouvrir » (qui aura pour éffet de selectionner le fichier dans le input file). A noté que Internet Explorer accepte et éxécute cette fonction correctement.
  • Et pour Internet Explorer maintenant, la méthode cloneNode() ne copie pas réellement l’élément input et sont contenu car il vide l’attribut « value » de celui-ci si il existe. Exemple :
    span class="st0">'value:'//affiche 'value:' + le chemin de votre fichier
    'new value:'//affiche 'new value:' uniquement car newfile.value == ''
    }

    la encore, je trouve ça totalement injustifié ! A noté qu’Opera et FireFox copie correctement le noeud avec la valeur.

Du coup, aucune méthode correcte, simple et portable sans iframe visible ne permet d’uploader des fichiers parce que personne n’arrive encore à s’entendre sur une spécification globale. Si vous utilisez GMail, vous pourrez remarquer que celui-ci a une méthode différente en fonction des navigateurs pour l’upload de pièce jointe sans ce servir d’iframes visibles. Il faut dire qu’avec les recommandations du W3C la dessus, on pourrait pépom votre disque dur tout simplement. Donc c’est simple, ici tout le monde a fait et fait encore de la ……

J’ai dernièrement recensé les principal méthodes permettant de faire un input file en javascript / AJAX ici.

prototype JS v1.5

le mercredi 31 janvier 2007

La nouvelle version du framework javascript prototype a été lancé il y a une dixaine de jours à peu près en meme temps que leur nouveau site : prototypejs.org

J’était partie mécontent de cette nouvelle version, car, pour commencer, lorsque j’ai remplacer l’ancienne par celle ci dans mes scripts existants, beaucoup de fonctionnalité ne marchaient plus… Ils semblent qu’ils aient implémenté beaucoup de nouvelles fonctions puissantes mais qui diffères légèrement des fonctions originales.
Lire la suite

secure remote password protocol (SRP)

le mercredi 31 janvier 2007

SRP est un protocole en fin de developpement distribué par Stanford permettant une méthode d’authentification login/password sécurisée sans utiliser le système RSA de clef public et leurs certificats.

Je ne vous parle pas de la sécurité des mots de passes betement hashés avant les transmissions Lire la suite

form addEventListener submit

le mardi 30 janvier 2007

J’ai capté pourquoi les retours d’EventListeners dans les addEventListener associés à l’action submit sur un form ne marchent pas.

un petit bout de code pour l’exemple :

span class="st0">'submit'

Cela n’annulera pas l’action sur lorsque l’ont click sur un boutton submit dans le formulaire.
La raison est simple, il peut y avoir plusieurs EventListeners associé au meme éléments et à la meme action, il serait donc dure de savoir quel valeur de retour le moteur va prendre en compte si il y en a plusieur.

Pour cette raison, le code retournant la valeur de retour définissant si le formulaire doit etre envoyé ou non doit etre placé dans la propriété onsubmit de l’élément :

 

Maintenant, le formulaire est désactivé et ne s’éxécutera uniquement si l’on fait apel à la méthode :

 

à noté que cela est aussi valable pour les action click des liens, la méthode addEventListener ne marchera pas, il faut utiliser :

 

buf firefox event + XHR.status

le lundi 29 janvier 2007

j’étais en train de developper comme un dieu jusqu’a se que je m’aperçoive d’une erreur qui se produisait sous firefox 2 et inférireur je suppose.

il semble qu’il y est une erreur au niveau du composant XMLHttpRequest lorsqu’il est couplé avec un gestionnaore d’évènement.. c’est bien ma veine maintenant je suis bloqué…
Je ne saurais pas reproduire l’erreur dans un code simple alors vous pourrez voir le code complet avec l’erreur ici.

rapport de bug sur mozilla.org

l’erreur semblerais avoir disparu sous firefox 3 en version beta, cependant le EvenListener ne marche pas correctement 🙁

cheats Counter-Strike:source

le samedi 27 janvier 2007

Comme je joue souvent aux jeux video, J’ai en eu marre de voir des tricheur de partout dans CSS et vu que certain voulaient pas me croire que c’était possible de cheater et ben je leur ai fais un screen :

CSs CHEATDans le première image vous pouvez voir que je vois tout le monde sur le radar. Très pratique pour repérer les ennemis

css cheat no flashDans la deuxième mon radar à disparu c’est normal c’est parce que je vien de me prendre une flash. Il n’y a que cet effet là, plus d’éblouissement !
Il y a la meme chose sur les grenade à fumigène aussi.
Allez je vous file le fichier : coconut v2.4 cheat counter strike source

LEFT 4 DEAD 2
Neuf, pour seulement 24€.
(prix steam 49€)

Il suffir de le lancer avant de lancer une partie CSS comme pour jouer normallement et ensuite, dans le jeu vous tapez les combinaisosn de touche correspondante pour avoir l’éffet que vous voulez.

Actuellement indétectable par le VAC (Valve Anti-Cheat).

iframe display=none ne se charge pas via AJAX

le vendredi 26 janvier 2007

En faisant un éssai d’upload de fichier via AJAX dans une iframe, j’ai remarqué que celle-ci ne veut pas se charger si elle est invisible (si le style display est égal à ‘none‘).

Qu’elle soit généré par un script ou définit à la base j’ai le meme résultat.

Donc Il faut mettre les propriétés with, height, margin, padding toutes à 0px … c’est pas très propre et je regrette de ne pas avoir trouver une autre solution…

sleep/wait/pause javascript

le vendredi 26 janvier 2007

Alors ça c’est le gros problème en se moment : faire une pause en javascript.

Attention je parle de pause ‘in-line’ et pas de lancement de fonction avec settimeout :

 

ceci n’est pas du script inline et il est impossible de l’utiliser en gardant toujours le meme corp de function.

Certain s’embarque dans des boucles qui font forcer votre processeur comme jamais :

 

autant dire que ça fait déchets…

la seule solution possible actuellement semble etre de passer par le narrative javascript compiler qui lui va se débrouiller pour nous compiler un code qui va nous permettre de faire des pauses dedans.

 

je trouve tout de meme abérant que cela ne soit pas inclus au javascript standard… ça limite fortement les possibilités de créer un code simple et facile à utiliser.

Mise à jour 24 juillet 2007 : Ajaxian a trouvé une implémentation du narrative javascript permettant de ne pas changer la syntaxe originale de javascript dans vos codes : javascript Strands

narrative javascript

le vendredi 26 janvier 2007

narrative javascript est un framework qui se déférencie des autres.
Il inclue un compilateur en javascript qui parse votre code avant de le retourner compilé à sa sauce.

Ce compilateur est principalement destiné a créer des codes sans asynchronisation, permettant ainsi de créer votre code ‘full inline’.

Il est basé sur un algorythme java traduit pour l’occasion en javascript.

site officiel

google et ie7 …

le mercredi 24 janvier 2007

google IE toolbarc’est une blague… je vire les utilisateur de IE de mon blog et voilà que google vient rajouter une publicité pour télécharger IE avec leur toolbar.

En plus ils font pas dans la dentelle : ils nous « recommande » et attention « nouvelle version sécurisé! » 😀

Il faut dire que la dernière faille permettait de faire un BoF entre d’autre thermes : d’éxécuter n’importe quoi, et elle a été comblé, il y a 15 jours, donc vu qu’il en sort une toutes les 3 semaines sur IE faites le compte.

Et j’aime le ciblage des annonces google, c’est du beau. Ils savent très bien que j’ai firefox et je crois qu’aucune personne au monde n’est retourné sur IE après avoir éssayé firefox ou opera.

Donc inutile leur pub sauf à m’énerver.