JeuWeb - Crée ton jeu par navigateur
[Javascript] JQuery leave ne réagit pas comme je veux sur un svg - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Javascript] JQuery leave ne réagit pas comme je veux sur un svg (/showthread.php?tid=7340)

Pages : 1 2 3


RE: [Javascript] JQuery leave ne réagit pas comme je veux sur un svg - Xenos - 09-04-2015

Tu peux pas, si le problème est vraiment le tag SVG, imbriquer le SVG dans une div qui fait exactement la taille de ce SVG, et poser l'évènement sur cette div (puisque, apparemment, tu veux juste savoir si on sort du SVG, pas si on sort d'un élément dans le SVG)? Un peu comme l'indiquait niahoo, mais sans chercher à savoir si le relatedTarget est le svg ou non?

Après, pour la div qui fait "pile la taille du svg", là comme ça, je dirai que display: inline-block; devrait aller.


RE: [Javascript] JQuery leave ne réagit pas comme je veux sur un svg - Ter Rowan - 09-04-2015

maintenant je n'ai plus le souci avec l'événement, mon problème est la manipulation des attributs du svg (ici viewbox) qui marche très bien avec la 1.6 et pas avec la 2.x


RE: [Javascript] JQuery leave ne réagit pas comme je veux sur un svg - Xenos - 09-04-2015

Donc, si j'ai compris, $("svg").attr("viewBox", "0 0 100 100"); ne marche pas si viewBox n'a pas été précédemment définit dans le code HTML?
Parce que .attr(), sans argument, c'est la lecture de la valeur de l'attribut (donc, que ce soit passé d'une chaine vide à undefined, pourquoi pas)


RE: [Javascript] JQuery leave ne réagit pas comme je veux sur un svg - niahoo - 10-04-2015

mais comme visiblement il bug, l'utiliser à tout prix n'est pas forcément la bonne démarche. bref, popr ton attribut, est-ce que jquery 2 respecte la casse sur ton attribut ?


RE: [Javascript] JQuery leave ne réagit pas comme je veux sur un svg - Ter Rowan - 12-04-2015

(10-04-2015, 08:44 AM)niahoo a écrit : mais comme visiblement il bug, l'utiliser à tout prix n'est pas forcément la bonne démarche. bref, popr ton attribut, est-ce que jquery 2 respecte la casse sur ton attribut ?

certes, si ce n'est que la seule chose qui me gène aujourd'hui dans la 1.6 est que je dois rajouter :

 if ( typeof(event.relatedTarget)!='undefined'){

if ( event.relatedTarget && event.relatedTarget.id=="mapBoundary"){

Et encore, le fonctionnement de la 1.6 qui me gène n'est pas forcément un bug (je ne connais pas la spec la dessus) puisque le fonctionnement fait hériter l'événement du on(leave) aux enfants de ma zone sélectionnée

tout le reste (que j'utilise) fonctionne correctement

la question est alors, sachant qu'il n'y a pas de problème de sécurité (code client sans impact sur les autres) que je n'ai aucun bug sur tout le reste de mon code, et que je n'arrive pas à utiliser jquery 2 sans avoir a revoir tout mon js orienté svg quel est l'intérêt de monter de version, le mieux me semble ici l'ennemi du bien.

Si jamais je me retrouve face à un mur alors je ferais l'effort, mais là je préfère avancer sur le contenu. Ca m'étonnerait que j'en arrive à cette extrêmité, vu que mon proto actuel est justement le dernier code complexe qui nécessite du jquery, après je n'aurais plus que du knock out à gérer côté client

et je ne sais pas si jquery est sensible à la casse, perso, sauf erreur, je respecte la casse pour des questions d'esthétique


RE: [Javascript] JQuery leave ne réagit pas comme je veux sur un svg - Ter Rowan - 12-04-2015

(09-04-2015, 08:17 PM)Xenos a écrit : Donc, si j'ai compris, $("svg").attr("viewBox", "0 0 100 100"); ne marche pas si viewBox n'a pas été précédemment définit dans le code HTML?
Parce que .attr(), sans argument, c'est la lecture de la valeur de l'attribut (donc, que ce soit passé d'une chaine vide à undefined, pourquoi pas)

non dans le html il était défini
là le sujet c'est que le attr("viewBox") ne marchait pas si il n'y avait pas avant de attr("viewBox", "0 0 1 1"); et encore je n'arrive pas à mettre les valeurs (alors que le même code en jquery 1.6) marche completement


RE: [Javascript] JQuery leave ne réagit pas comme je veux sur un svg - niahoo - 12-04-2015

non mais est-ce que quand tu set la viewBox jQ set la viewbox ?


RE: [Javascript] JQuery leave ne réagit pas comme je veux sur un svg - Ter Rowan - 12-04-2015

(12-04-2015, 01:46 PM)niahoo a écrit : non mais est-ce que quand tu set la viewBox jQ set la viewbox ?

je viens de faire le test, en JQ 2.1, avec B ou avec b la viewBox n'est pas settée (ou resettée)
en JQ 1.6, avec le B ça marche, avec le b, ça ne marche pas


à noter que en JQ 2.1 , le reste du code (changement de classe css) marche correctement, donc le code tourne bien, c'est juste l'instruction qui ne passe pas. La voilà in extenso :

 $("#map svg").attr("viewBox",

(parseInt(vb[0])-0.5*parseInt(vb[2])) +" "+
(parseInt(vb[1])-0.5*parseInt(vb[3])) +" "+
(parseInt(vb[2])*2)+ " "+
(parseInt(vb[3])*2)
);

mais... je viens de trouver, tu avais raison le sujet est bien la majuscule du B:

bien que je mette viewBox, firebug me dit que jquery 2.1 set l'attribut viewbox

extract firebug :
<svg viewBox="30 20 400 400" viewbox="30 20 40 400">

viewBox correspond à mon code html inline de départ
viewbox correspond à l'ordre jquery 2.1

il y a donc un bug sur la 2.1 à ce sujet (où bien je n'ai rien compris)


RE: [Javascript] JQuery leave ne réagit pas comme je veux sur un svg - niahoo - 15-04-2015

Zut j'avais raté ta réponse.

Ce n'est pas considéré comme un bug je crois.

il te faut faire
$('#map svg').get(0).setAttribute('viewBox', '...')



RE: [Javascript] JQuery leave ne réagit pas comme je veux sur un svg - Ter Rowan - 21-04-2015

tu as raison, quand j'utilise le sélecteur "#map svg" c'est bien un tableau qu'il me renvoie, et je devrais mettre un [0], j'avais fait une erreur là dessus, et encore après tout ca voudrait dire que je demande à jquery d'appliquer à toute ma sélection les modifications si je ne mets pas [0]

par contre quand je sélectionne via un id (genre "#zzmap") il ne me renvoie qu'un objet

cependant dans les deux cas, le comportement résultat est le même : il modifie un autre attribut que viewBox a savoir viewbox