OVH Cloud OVH Cloud

Indiquer la position de la souris : javascript ?

55 réponses
Avatar
Hugolino
Salut,

Je suis prof de physique et je donne souvent mes TP sous forme de page
HTML.
Dans un TP, <http://urlalacon.com/B2eh1o> j'ai besoin que mes élèves
analysent des jpeg extraits d'une vidéo. J'aurais besoin que s'affiche
dans le navigateur la position de la souris (en pixels).

Est-ce que seul un langage de script comme javascript permettrait de
faire ça, ou est-ce que je peux m'en tirer avec de la css pure. Parce
que javascript, j'y connais rien :/

Tant qu'à faire, si javascript est requis, il faudrait qu'ils puissent
cliquer deux points particuliers de la photo pour que les pixels soit
convertis en millimètre. (parce que je connais la distance entre ces
deux points qui se déplacent sur les photos).

Si vous pouviez me fournir le nom des fonctions javascript qui
permettent de faire ça, je gagnerais un peu de temps dans mes
recherches.

D'ailleurs puisque je ne connais rien à javascript, est-ce qu'il n'y
aurait pas maintenant un langage coté client plus évolué/facile/puissant
que javascript, ou est-ce devenu un standard incontournable ?


Merci de vos avis


--
Il a fallu des millions d'années pour développer la capacité à raisonner
des hommes. Mais il suffit de quelques instants de logique féminine
pour l'abattre.
Hugo (né il y a 1 388 582 249 secondes)

10 réponses

2 3 4 5 6
Avatar
Olivier Miakinen
Le 01/05/2008 15:55, SAM a écrit :
Olivier Miakinen a écrit :
Le 01/05/2008 00:49, Hugolino a écrit :
Je vais utiliser la ruse de SAM.



Là encore c'est dommage,



Je ne vois pas pourquoi.



Juste parce que, ici, je ne vois pas l'intérêt d'utiliser name au lieu
de id.

On n'a aucune obligation de personnaliser (id ou name) quoi que ce soit.
(sauf les éléments de formulaires, si j'ai bien compris)



C'est vrai, sauf si on veut y accéder en JavaScript. Et dans ce dernier
cas il est plus simple d'aller directement chercher un élément par
getElementById plutôt que d'aller chercher dans une table de names
(fût-elle à un seul élément).

Pour la question du JS, bien qu'aujourd'hui on ait le DOM à disposition,
l'arbre des forms existe toujours.
Dans le cas présent le JS ne s'occupe que d'éléments de formulaire,
autant se servir simplement du JS approprié.
La "ruse" pour repérer le formulaire et qui n'est pas de moi me semble
tout à fait conforme dans ce contexte.



Ah, tu as peut-être raison dans le cas où on n'utilise pas le DOM. C'est
un domaine que je ne connais pas du tout.
Avatar
SAM
Olivier Miakinen a écrit :
Le 01/05/2008 15:38, SAM a écrit :

Est-ce qu'un 'input' qui n'a qu'un id est envoyé avec le formulaire ?



Bonne question, je n'en sais rien. Et un INPUT qui n'a ni name ni id,
est-ce que sa valeur est envoyée telle quelle, sans « nom= » devant ?



à ce que je crois, un input-submit non nommé n'est pas envoyé

verif : <http://cjoint.com/?fbtnELI4aZ>
Fx n'envoie pas l'input qui n'a qu'un id.
et le submit non nommé n'est pas envoyé non plus

Tout ça reste somme toute assez confus



Oui.



comment le Validator s'y retrouve ?

--
sm
Avatar
Olivier Miakinen
Le 01/05/2008 19:15, SAM a écrit :

à ce que je crois, un input-submit non nommé n'est pas envoyé

verif : <http://cjoint.com/?fbtnELI4aZ>
Fx n'envoie pas l'input qui n'a qu'un id.
et le submit non nommé n'est pas envoyé non plus



C'était donc visiblement une erreur dans les exemples de la norme (la
partie normative étant correcte, elle).

Tout ça reste somme toute assez confus



Oui.



comment le Validator s'y retrouve ?



Il s'en fout : pour lui l'attribut name est facultatif, point barre.
Avatar
SAM
Olivier Miakinen a écrit :
Le 01/05/2008 15:55, SAM a écrit :
Olivier Miakinen a écrit :
Pour la question du JS, bien qu'aujourd'hui on ait le DOM à disposition,
l'arbre des forms existe toujours.
Dans le cas présent le JS ne s'occupe que d'éléments de formulaire,
autant se servir simplement du JS approprié.
La "ruse" pour repérer le formulaire et qui n'est pas de moi me semble
tout à fait conforme dans ce contexte.





Rappel, la "ruse" pour pas de nom ni d'id :
var f = document.forms[0];

Je suppose que :
var f = document.getElementsByTagName('FORM')[0].
aurait aussi pu faire.
Mais pfffttt pas simple à taper .... ;-)

Ah, tu as peut-être raison dans le cas où on n'utilise pas le DOM. C'est
un domaine que je ne connais pas du tout.



J'ai le sentiment (mais c'est vraiment juste un sentiment) que d'appeler
des éléments de formulaires (déjà rangés dans l'arbre des forms dès le
chargement de la page) par la méthode DOM, outre la lourdeur d'écriture,
ne peut que compliquer la tâche du Navigateur.
Surtout dans la mesure où on ne se contente que de calculer et modifier
qques values sans vraiment toucher aux objets (rajout, suppression,
styles, etc ...).

Après ... comment fait le Navigateur pour remettre à jour son DOM à
partir de l'arbre des forms modifié ... mystère.
Qu'est-ce qui le fatigue le plus ?
- forms --> DOM
- DOM --> forms
????

--
sm
Avatar
Olivier Miakinen
Le 01/05/2008 19:45, SAM a écrit :

La "ruse" pour repérer le formulaire et qui n'est pas de moi me semble
tout à fait conforme dans ce contexte.





Rappel, la "ruse" pour pas de nom ni d'id :
var f = document.forms[0];



Au temps pour moi, je répondais vraiment à côté de la plaque. J'avais
cru que la "ruse" en question consistait juste à passer en HTML 4.01
Transitionnel au lieu de XHTML 1.0 Strict, afin de pouvoir laisser un
attribut name qui fait râler le validateur XHTML.

[...]

J'ai le sentiment (mais c'est vraiment juste un sentiment) que d'appeler
des éléments de formulaires (déjà rangés dans l'arbre des forms dès le
chargement de la page) par la méthode DOM, outre la lourdeur d'écriture,
ne peut que compliquer la tâche du Navigateur.



J'ai tendance à ignorer ce genre de considérations. Mon propre sentiment
(pas plus mis à l'épreuve que le tien) est que cela influe à peu près
aussi peu sur les performances que le choix entre 'x'.$var ou "x".$var
ou encore "x$var" en PHP.
Avatar
SAM
Olivier Miakinen a écrit :

Au temps pour moi, je répondais vraiment à côté de la plaque. J'avais
cru que la "ruse" en question consistait juste à passer en HTML 4.01
Transitionnel au lieu de XHTML 1.0 Strict, afin de pouvoir laisser un
attribut name qui fait râler le validateur XHTML.



Oui c'avait aussi été proposé.

--
sm
Avatar
Hugolino
Le Thu, 01 May 2008 03:30:41 +0200, SAM a écrit:
Hugolino a écrit :
> Le Wed, 30 Apr 2008 10:18:56 +0200, SAM a écrit:
>>
>> voir (application du DOM) : <http://cjoint.com/?eEjHEGMLPw>
> Que veux-tu dire par "application du DOM" ?
Comme tu l'as découvert :
voir le JS du code source du fichier en frame pour un début de démo
de JS s'adressant au DOM
Une variante : <http://cjoint.com/data/fbdxrRLLGG.htm>



Celle-là charge vraiment beaucoup ma machine (Athlon 2400+), le proc
passe tout de suite à 100% et la charge atteint presque 200%.
Je me méfie un peu parce que j'ai déjà planté firefox et toute ma ubuntu
avec le script js d'un TP d'astrophysique.

> La vitesse chute car la tension superficielle qui tracte la pièce fini
> par baisser aussi devant la pièce à cause de la diffusion du liquide
> vaisselle dans tout le cristallisoir.
J'avais bien dit que j'en oubliais.
(doit bien y avoir des histoires de frottements, d'inertie, de volume
d'eau déplacé, tant qu'on y est)



Oui, aussi.

Le pesage de la goute de teepol qui doit passer entière sur la pièce, ça
doit pas être coton !



Quand je recommencerais la vidéo, je mettrais la goutte dans l'eau juste
derrière la pièce, pas dessus.

> Oui, mais l'expérience ne marche qu'une fois. Après chaque essai, je
> dois
oui, oui, bien sûr, et alors ?
yapas d'raison qu'il n'y ait que les élèves à marner, non mais !



Le pire, c'est qu'ils ne se rendent absolument pas compte de la somme de
boulot que ça représente :/

> mais faudrait alors que je demande qu'on m'installe un lit
> de camp dans le labo :)
Pas d'bol, ce n'est pas possible : y a l'alarme la nuit.



C'est vrai et en plus ces boulets descendent la passerelle à 19h00 alors
je ne peux même pas envoyer les fichiers chez moi pour les traiter :)

> Je voulais garder la possibilité de relever les coordonnées des deux
> points plutôt que du centre, car ça permet de tenir compte de l'énergie
> cinétique de rotation.
Là, j'ai rien compris. (le centre reste pas au centre ?)



Si tu ne mesures que la vitesse du centre, tu ne peux calculer que
l'énergie cinétique de translation. Si tu mesures comment ta pièce
tourne, tu peux calculer aussi l'énergie cinétique de rotation.

> le TP a rapidement tourné à l'apprentissage de l'analyse et du
> filtrage numérique des données pour essayer de contrebalancer la
> pauvre qualité des mesures.
Pourtant ça doit être mieux qu'à la règle graduée, non?
Vous avez quand même pu arriver à qque chose ?



Oui.

Bon, où sont les corrigés ?



Une feuille de calcul OOo : <http://tinyurl.com/6kjzc5>

>> var f = document.forms[0];
> OK, je vais faire ça, car changer le doctype de toutes les pages, j'ai
> pas le courage.
Je croyais tes pages d'exo générées par php ?



Pas toutes non, et celles contenant beaucoup d'images sont en général
générées à partir d'un script.

--
Smart men are smarter than they look; smart women look smarter than they are.
Hugo (né il y a 1 389 137 038 secondes)
Avatar
Hugolino
Le Thu, 01 May 2008 02:20:27 +0200, Olivier Miakinen a écrit:
[cut]



OK, merci pour les explications et les liens, je lirais ça ce WE.

>> > Il y aussi <form name="Form1" action="#" onsubmit="return false;"> qui
>> > raconte :
>> > 8<-----------8<---------8<----------8<----------8<----------8<----------8<
>> > there is no attribute "name"
>> > [cut]
>> > 8<-----------8<---------8<----------8<----------8<----------8<----------8<
>
> Si je supprime l'attribut name, le script javascript ne sait plus à quoi
> je fais référence.

Mais si tu remplaces « name="Form1" » par « id="Form1" », tu gagnes sur
les trois tableaux : le script le trouvera, le validateur ne râlera pas,
et ton code sera plus propre.



J'ai oublié de préciser que j'avais testé la page après avoir remplacé
name par id: le script ne marche plus (la position de la souris
n'apparaît plus et les clics sont inopérants). Et firebug rapporte une
erreur:
document.Form1 has no properties
document.Form1['MousePos_pix_x'].value = posx;
C'est à dire à la première ligne du script qui se réfère à document.Form1

> Je vais utiliser la ruse de SAM.

Là encore c'est dommage, comme de supprimer toute marque de paragraphe.

Plus exactement : utiliser HTML 4.01 au lieu de XHTML est préférable à
plein d'égards, mais que ça ne t'empêche pas d'utiliser id au lieu de name.



OK, je vais voir si je garde le XHTML. Dis-moi juste dans quel cas il
est "mieux" que le HTML 4.01.

--
Que pensez-vous de ce script ? Permet-il de bien sécurisé l'ordinateur ?


Non il y a un trou de sécurité abominable du à un bug de iptables qui laisse
passer des troyens bsd utilisant l'émulation Linux par un port netbios.
Hugo (né il y a 1 389 138 171 secondes)
Avatar
SAM
Hugolino a écrit :
Le Thu, 01 May 2008 03:30:41 +0200, SAM a écrit:
Hugolino a écrit :
Le Wed, 30 Apr 2008 10:18:56 +0200, SAM a écrit:

voir (application du DOM) : <http://cjoint.com/?eEjHEGMLPw>




Une variante : <http://cjoint.com/data/fbdxrRLLGG.htm>



Celle-là charge vraiment beaucoup ma machine (Athlon 2400+), le proc
passe tout de suite à 100% et la charge atteint presque 200%.



Ha?
Le mien passe à 2 x 50%
puis 20%+80%

Pas pire que lorsque je demande à OOo de scroller le tableau :
Une feuille de calcul OOo : <http://tinyurl.com/6kjzc5>



Bon, ça fonctionne en boucle et peut-être n'est-ce pas nécessaire de
faire s'ajouter des images ad eternam ?
au 2ième passage j'aurais pu ne faire que se déplacer les images déjà
affichées ? ... !
<http://cjoint.com/?fcbTCqRWLK>
ça n'a pas l'air de changer grd' chose ...


Pratique qd même ces tableurs grapheurs qui sortent les ecarts types et
moyennes dans la seconde ou presque.

--
sm
Avatar
SAM
Hugolino a écrit :

J'ai oublié de préciser que j'avais testé la page après avoir remplacé
name par id: le script ne marche plus (la position de la souris
n'apparaît plus et les clics sont inopérants). Et firebug rapporte une
erreur:
document.Form1 has no properties



relire le début de mon post du 28/04 à 3:49

--
sm
2 3 4 5 6