[JS][RESOLU] e not defined sur Mozilla

e not defined sur Mozilla [JS][RESOLU] - Javascript/Node.js - Programmation

Marsh Posté le 21-08-2018 à 16:20:15    

Hello,
 
Alors pour faire cours, j'ai créé un canevas pour faire des dessins dedans (en vrai c'est pour des signatures)
 
Bien-sur ça marche sur Chrome etc, mais pas sur Mozilla, problème connu avec le "event" qui ne fonctionne pas exactement pareil apparemment.
 
Le seul passage qui bloque encore, et là je ne pige pas pourquoi, c'est ça :
 

Code :
  1. function getTouchPos(e) {
  2.         if (!e)
  3.             var e = window.event || e;
  4.         //C'est ici que ça coince avec le "e not defined", sauf que, logiquement, mon petit "if" au dessus devrait éviter ce problème ! Je sèche là :/
  5.         if(e.touches) {
  6.             if (e.touches.length == 1) { // Only deal with one finger
  7.                 var touch = e.touches[0]; // Get the information for finger #1
  8.                 touchX=touch.pageX-touch.target.offsetLeft;
  9.                 touchY=touch.pageY-touch.target.offsetTop;
  10.             }
  11.         }
  12.     }


 
Je suis persuader que la réponse est très simple, mais je ne vois pas, je dois etre tellement buter dedans que je ne m'en rend pas compte ..
 
Merci à vous :jap:


Message édité par HaiDZ le 21-08-2018 à 17:49:49
Reply

Marsh Posté le 21-08-2018 à 16:20:15   

Reply

Marsh Posté le 21-08-2018 à 16:30:13    

et ton window.event ?  
 
Il me semble que la compatibilité n'est pas assurée avec FF sur cette propriété de window.

Message cité 1 fois
Message édité par antac le 21-08-2018 à 16:30:55
Reply

Marsh Posté le 21-08-2018 à 16:35:41    

antac a écrit :

et ton window.event ?  
 
Il me semble que la compatibilité n'est pas assurée avec FF sur cette propriété de window.


 
Tu veux dire, remplacer le "e" directement par "window.event" ?  
 
Je ne pense pas avoir compris  :sweat:
 
Edit : Il y a effectivement un problème de compatibilité mais, j'ai vraiment du mal à comprendre comment le rendre générique à tout navigateur malgré les exemples trouvés sur internet.
 
Ce que je ne comprends pas c'est que, si le "e" n'est pas valeurisé, il rentre dans le if, et donc il devrait être valeurisé (d'une erreur à la limite)
 
Hors là, il me dit que ce n'est pas défini, c'est ça qui me dépasse


Message édité par HaiDZ le 21-08-2018 à 16:38:14
Reply

Marsh Posté le 21-08-2018 à 16:39:31    

Non mais à coup sur "window.event" n'est pas défini ici.
Du coup quand tu fais : var e = window.event || e; ça donne var e = undefined || undefined ce qui donne de facto "undefined" (d'ailleurs aucun intérêt de retenter une affectation de e, tu l'as exclu dans ton test).

Reply

Marsh Posté le 21-08-2018 à 16:42:05    

antac a écrit :

(d'ailleurs aucun intérêt de retenter une affectation de e, tu l'as exclu dans ton test).


 
Exact, j'ai juste copier cette partie d'un bloc au dessus et je n'ai même pas fait gaffe à ça, mais ça ne devrait pas causer de soucis.
 
Je pense que tu as raison, je pas chercher à voir si l'event existait tout simplement !
 
Merci d'avoir éclairé le sujet !
 
J'update une fois que j'ai des nouvelles :)


Message édité par HaiDZ le 21-08-2018 à 16:42:31
Reply

Marsh Posté le 21-08-2018 à 16:42:35    

Essai ça pour récupérer la touche choisie :

Code :
  1. function getTouch(e){
  2.     var keynum;
  3.     if(window.event) { // IE                     
  4.       keynum = e.keyCode;
  5.     } else if(e.which){ // Netscape/Firefox/Opera                   
  6.       keynum = e.which;
  7.     }
  8.   }


 

Reply

Marsh Posté le 21-08-2018 à 17:04:22    

Ce n'est pas une touche en sois, c'est l'event touch, déclenché par l'appuie sur un écran tactile (pour signer avec une tablette)

Reply

Marsh Posté le 21-08-2018 à 17:08:11    

Ah oups pardon :
tu as regardé là dessus : https://developer.mozilla.org/fr/do [...] uch_events ?

Reply

Marsh Posté le 21-08-2018 à 17:11:55    

Yep, mais j'ai du mal à piger tout le truc. Je pense que le problème vient d'en amont de cette fonction.
 
Vu que j'appel la fonction via une autre fonction, l'event ne doit pas être visible, je vais essayer de le passer en param, afin de le récup dans la deuxième.
 
Si j'ai compris (ce que j'en doute) sur les navigateurs, event est une variable globale, sauf sur ff
 
Je vais test :/


Message édité par HaiDZ le 21-08-2018 à 17:12:46
Reply

Marsh Posté le 21-08-2018 à 17:49:09    

Problème résolu, du coup c'était bien une histoire de privée publique (je crois xD)
 
En passant le "e" de l'event en param de la fonction parent, puis en le repassant en param dans la fonction où l'erreur apparaissait, tout semble être good, et sur tous les navigateurs ! :D
 
Merci d'avoir aiguillé la chose ! Je vais pouvoir dessiner des octets (en anglais) signer sur mon canvas  :jap:


Message édité par HaiDZ le 21-08-2018 à 17:49:29
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed