[Publipostage sur f.c.i.w.auteurs et f.c.l.javascript, suivi sur
f.c.l.javascript - merci de corriger si inadapté]
Bonjour,
J'ai déjà vu dans plusieurs applications en ligne des choses épatantes
:) Je cherche en particulier en ce moment à reproduire un comportement
particulier : soit une liste d'items avec plusieurs éléments associés.
Par exemple, dans un webmail, la liste des messages contenus dans le
dossier courant. Pour chaque item, plusieurs éléments : expéditeur,
titre, date, taile, ... La "vieille méthode" est de mettre une checkbox
devant chaque éléments, et les actions (supprimer, déplacer, ...) en
haut/bas de page.
J'ai vu plusieurs fois des choses épatantes et qui fonctionnaient tant
sur IE 6 que Firefox, qui rapprochaient l'ergonomie à ce que l'on trouve
sur une application classique. Bref : plus de checkbox, une sélection
naturelle en cliquant sur les items, possible au clavier, éventuellement
multiple (Ctrl et Maj), un clic droit qui ouvre un menu contextuel, des
rollovers, ...
Il y a déjà des choses que l'on peut faire avec CSS (changement de
couleur au survol), mais pour le reste je n'ai jamais bien creusé car il
s'agissait à chaque fois de choses assez compliquées à comprendre (bcp
de choses pour isoler ce qui m'intéresse)...
Est-ce que quelqu'un aurait des exemples simples (peut être lié à des
bibliothèques Google ou Yahoo ou ... ?), qui me permettrait d'obtenir
une telle interface au sein de mes applications Web ?
Ça marche avec Mozilla sur Windows, simplement cela sélectionne l'image en même temps que ça la zoome (elle devient toute bleutée).
Bon, alors j'ai longuement ½uvré et ... c'est réparé. (du moins avec mon FF Mac ... Linux ? Windows ?)
Ça marche finement avec Mozilla Windows. Je ne teste pas avec Firefox, je suppose que c'est pareil. Bravo pour la rapidité de ta correction !
Merci, merci, n'en jettez plus :-)
Sur Mac : IE : OK mais faut pas l'affoler sinon ouvre une nvelle fenêtre ! Safari : OK Opera : faut pas l'affoler sinon tendance à se bloquer iCab : comme FF Linux ... pas de zoom+
Ça marche avec Mozilla sur Windows, simplement cela sélectionne l'image
en même temps que ça la zoome (elle devient toute bleutée).
Bon, alors j'ai longuement ½uvré et ... c'est réparé.
(du moins avec mon FF Mac ... Linux ? Windows ?)
Ça marche finement avec Mozilla Windows. Je ne teste pas avec Firefox,
je suppose que c'est pareil. Bravo pour la rapidité de ta correction !
Merci, merci, n'en jettez plus :-)
Sur Mac :
IE : OK mais faut pas l'affoler sinon ouvre une nvelle fenêtre !
Safari : OK
Opera : faut pas l'affoler sinon tendance à se bloquer
iCab : comme FF Linux ... pas de zoom+
Ça marche avec Mozilla sur Windows, simplement cela sélectionne l'image en même temps que ça la zoome (elle devient toute bleutée).
Bon, alors j'ai longuement ½uvré et ... c'est réparé. (du moins avec mon FF Mac ... Linux ? Windows ?)
Ça marche finement avec Mozilla Windows. Je ne teste pas avec Firefox, je suppose que c'est pareil. Bravo pour la rapidité de ta correction !
Merci, merci, n'en jettez plus :-)
Sur Mac : IE : OK mais faut pas l'affoler sinon ouvre une nvelle fenêtre ! Safari : OK Opera : faut pas l'affoler sinon tendance à se bloquer iCab : comme FF Linux ... pas de zoom+
-- Stephane Moriaux et son [moins] vieux Mac
ASM
Ne marche toujours pas avec FF sous Linux... snif. Mais fonctionne avec FF sur Windows.
Bon, si FF Linux comme iCab ne capte pas les Alt, Ctrol ni Shift ...
test : http://stephane.moriaux.perso.orange.fr/truc/alt_zoom/v1 essayer alternativement avec les trois touches pré-citées et dire si le message JS repond 'true' pour la touche pressée.
iCab s'en moque comme de sa 1ière chemise :-(
-- Stephane Moriaux et son [moins] vieux Mac
Ne marche toujours pas avec FF sous Linux... snif. Mais fonctionne avec FF
sur Windows.
Bon, si FF Linux comme iCab ne capte pas les Alt, Ctrol ni Shift ...
test :
http://stephane.moriaux.perso.orange.fr/truc/alt_zoom/v1
essayer alternativement avec les trois touches pré-citées et dire si le
message JS repond 'true' pour la touche pressée.
Ne marche toujours pas avec FF sous Linux... snif. Mais fonctionne avec FF sur Windows.
Bon, si FF Linux comme iCab ne capte pas les Alt, Ctrol ni Shift ...
test : http://stephane.moriaux.perso.orange.fr/truc/alt_zoom/v1 essayer alternativement avec les trois touches pré-citées et dire si le message JS repond 'true' pour la touche pressée.
iCab s'en moque comme de sa 1ière chemise :-(
-- Stephane Moriaux et son [moins] vieux Mac
David JOURAND
Ne marche toujours pas avec FF sous Linux... snif. Mais fonctionne avec FF sur Windows.
Bon, si FF Linux comme iCab ne capte pas les Alt, Ctrol ni Shift ...
test : http://stephane.moriaux.perso.orange.fr/truc/alt_zoom/v1 essayer alternativement avec les trois touches pré-citées et dire si le message JS repond 'true' pour la touche pressée.
iCab s'en moque comme de sa 1ière chemise :-(
FF Linux aussi... (mais Ctrl et Shift sont reconnus).
-- David Jourand
Ne marche toujours pas avec FF sous Linux... snif. Mais fonctionne avec FF
sur Windows.
Bon, si FF Linux comme iCab ne capte pas les Alt, Ctrol ni Shift ...
test :
http://stephane.moriaux.perso.orange.fr/truc/alt_zoom/v1
essayer alternativement avec les trois touches pré-citées et dire si le
message JS repond 'true' pour la touche pressée.
iCab s'en moque comme de sa 1ière chemise :-(
FF Linux aussi... (mais Ctrl et Shift sont reconnus).
Ne marche toujours pas avec FF sous Linux... snif. Mais fonctionne avec FF sur Windows.
Bon, si FF Linux comme iCab ne capte pas les Alt, Ctrol ni Shift ...
test : http://stephane.moriaux.perso.orange.fr/truc/alt_zoom/v1 essayer alternativement avec les trois touches pré-citées et dire si le message JS repond 'true' pour la touche pressée.
iCab s'en moque comme de sa 1ière chemise :-(
FF Linux aussi... (mais Ctrl et Shift sont reconnus).
-- David Jourand
Pierre Goiffon
Pierre Goiffon wrote:
une sélection naturelle en cliquant sur les items, possible au clavier, éventuellement multiple (Ctrl et Maj), un clic droit qui ouvre un menu contextuel, des rollovers, ...
Merci à tous pour vos réponses
A force de travail je suis arrivé à une petite maquette... Le tr:hiver ne fonctionnant pas sur IE, et l'équivalent réalisé avec hover:expression étant désespéremment lent, je me suis tourné vers un parcours de l'arbre dom et affecter à chaque TR un onmouseover et un onmouseout. Je voulais au passage lancer un onclick pour la sélection, mais ça ne fonctionne pas...
Exemple dispo ici : http://pgoiffon.free.fr/_temp/datagrid_20060613.html
Ce qui bloque c'est : tableau.tBodies[i].rows[j].onclick = LigneCliquee(this.id);
On entre dans LigneCliquees à chaque passage sur cette ligne, et il n'y a rien qui se déclenche lorsque l'on clique sur une cellule...
Hu ?
Pierre Goiffon wrote:
une sélection
naturelle en cliquant sur les items, possible au clavier, éventuellement
multiple (Ctrl et Maj), un clic droit qui ouvre un menu contextuel, des
rollovers, ...
Merci à tous pour vos réponses
A force de travail je suis arrivé à une petite maquette... Le tr:hiver
ne fonctionnant pas sur IE, et l'équivalent réalisé avec
hover:expression étant désespéremment lent, je me suis tourné vers un
parcours de l'arbre dom et affecter à chaque TR un onmouseover et un
onmouseout. Je voulais au passage lancer un onclick pour la sélection,
mais ça ne fonctionne pas...
Exemple dispo ici :
http://pgoiffon.free.fr/_temp/datagrid_20060613.html
Ce qui bloque c'est :
tableau.tBodies[i].rows[j].onclick = LigneCliquee(this.id);
On entre dans LigneCliquees à chaque passage sur cette ligne, et il n'y
a rien qui se déclenche lorsque l'on clique sur une cellule...
une sélection naturelle en cliquant sur les items, possible au clavier, éventuellement multiple (Ctrl et Maj), un clic droit qui ouvre un menu contextuel, des rollovers, ...
Merci à tous pour vos réponses
A force de travail je suis arrivé à une petite maquette... Le tr:hiver ne fonctionnant pas sur IE, et l'équivalent réalisé avec hover:expression étant désespéremment lent, je me suis tourné vers un parcours de l'arbre dom et affecter à chaque TR un onmouseover et un onmouseout. Je voulais au passage lancer un onclick pour la sélection, mais ça ne fonctionne pas...
Exemple dispo ici : http://pgoiffon.free.fr/_temp/datagrid_20060613.html
Ce qui bloque c'est : tableau.tBodies[i].rows[j].onclick = LigneCliquee(this.id);
On entre dans LigneCliquees à chaque passage sur cette ligne, et il n'y a rien qui se déclenche lorsque l'on clique sur une cellule...
Hu ?
Olivier Miakinen
Exemple dispo ici : http://pgoiffon.free.fr/_temp/datagrid_20060613.html
Ce qui bloque c'est : tableau.tBodies[i].rows[j].onclick = LigneCliquee(this.id);
On entre dans LigneCliquees à chaque passage sur cette ligne, et il n'y a rien qui se déclenche lorsque l'on clique sur une cellule...
Écrit comme ça, c'est normal que tu affectes à onclick le résultat de l'exécution de la fonction LigneCliquee, alors qu'en fait tu voudrais lui affecter le nom de la fonction.
Je ne me rappelle pas la syntaxe exacte, mais l'un des deux exemples suivants a peut-être une chance de fonctionner : tableau.tBodies[i].rows[j].onclick = 'LigneCliquee(this.id)'; ou : tableau.tBodies[i].rows[j].onclick = 'LigneCliquee(' + this.id + ')';
Exemple dispo ici :
http://pgoiffon.free.fr/_temp/datagrid_20060613.html
Ce qui bloque c'est :
tableau.tBodies[i].rows[j].onclick = LigneCliquee(this.id);
On entre dans LigneCliquees à chaque passage sur cette ligne, et il n'y
a rien qui se déclenche lorsque l'on clique sur une cellule...
Écrit comme ça, c'est normal que tu affectes à onclick le résultat de
l'exécution de la fonction LigneCliquee, alors qu'en fait tu voudrais
lui affecter le nom de la fonction.
Je ne me rappelle pas la syntaxe exacte, mais l'un des deux exemples
suivants a peut-être une chance de fonctionner :
tableau.tBodies[i].rows[j].onclick = 'LigneCliquee(this.id)';
ou :
tableau.tBodies[i].rows[j].onclick = 'LigneCliquee(' + this.id + ')';
Exemple dispo ici : http://pgoiffon.free.fr/_temp/datagrid_20060613.html
Ce qui bloque c'est : tableau.tBodies[i].rows[j].onclick = LigneCliquee(this.id);
On entre dans LigneCliquees à chaque passage sur cette ligne, et il n'y a rien qui se déclenche lorsque l'on clique sur une cellule...
Écrit comme ça, c'est normal que tu affectes à onclick le résultat de l'exécution de la fonction LigneCliquee, alors qu'en fait tu voudrais lui affecter le nom de la fonction.
Je ne me rappelle pas la syntaxe exacte, mais l'un des deux exemples suivants a peut-être une chance de fonctionner : tableau.tBodies[i].rows[j].onclick = 'LigneCliquee(this.id)'; ou : tableau.tBodies[i].rows[j].onclick = 'LigneCliquee(' + this.id + ')';
ASM
Pierre Goiffon wrote:
une sélection naturelle en cliquant sur les items, possible au clavier, éventuellement multiple (Ctrl et Maj), un clic droit qui ouvre un menu contextuel, des rollovers, ...
tu veux juste roll-overiser des rangées de tableaux ? tu veux juste marquer des rangées de tableaux ? tu veux juste que ces rangées marquées soit roll-ovérisées elles aussi ?
voir (sans sélection multiple) : http://perso.orange.fr/stephane.moriaux/truc/tables_highlight_rows_fr variante (celulles de même contenu): http://perso.orange.fr/stephane.moriaux/truc/tables_highlight_cells_fr
Merci à tous pour vos réponses
A force de travail je suis arrivé à une petite maquette... Le tr:hiver ne fonctionnant pas sur IE, et l'équivalent réalisé avec hover:expression étant désespéremment lent, je me suis tourné vers un parcours de l'arbre dom et affecter à chaque TR un onmouseover et un onmouseout. Je voulais au passage lancer un onclick pour la sélection, mais ça ne fonctionne pas...
bon, là, je refile une fois de plus ma méthode CSS+FF/JS+IE car ça m'agace dur dur de voir sur la démo, que mon FF va se farcir des onmouse complètement inutiles.
On entre dans LigneCliquees à chaque passage sur cette ligne, et il n'y a rien qui se déclenche lorsque l'on clique sur une cellule...
ben non, ça a déjà gueulé à ttes les lignes au chargement :-)
-- Stephane Moriaux et son [moins] vieux Mac
Pierre Goiffon wrote:
une sélection naturelle en cliquant sur les items, possible au
clavier, éventuellement multiple (Ctrl et Maj), un clic droit qui
ouvre un menu contextuel, des rollovers, ...
tu veux juste roll-overiser des rangées de tableaux ?
tu veux juste marquer des rangées de tableaux ?
tu veux juste que ces rangées marquées soit roll-ovérisées elles aussi ?
voir (sans sélection multiple) :
http://perso.orange.fr/stephane.moriaux/truc/tables_highlight_rows_fr
variante (celulles de même contenu):
http://perso.orange.fr/stephane.moriaux/truc/tables_highlight_cells_fr
Merci à tous pour vos réponses
A force de travail je suis arrivé à une petite maquette... Le tr:hiver
ne fonctionnant pas sur IE, et l'équivalent réalisé avec
hover:expression étant désespéremment lent, je me suis tourné vers un
parcours de l'arbre dom et affecter à chaque TR un onmouseover et un
onmouseout. Je voulais au passage lancer un onclick pour la sélection,
mais ça ne fonctionne pas...
bon, là, je refile une fois de plus ma méthode CSS+FF/JS+IE
car ça m'agace dur dur de voir sur la démo, que mon FF va se farcir des
onmouse complètement inutiles.
une sélection naturelle en cliquant sur les items, possible au clavier, éventuellement multiple (Ctrl et Maj), un clic droit qui ouvre un menu contextuel, des rollovers, ...
tu veux juste roll-overiser des rangées de tableaux ? tu veux juste marquer des rangées de tableaux ? tu veux juste que ces rangées marquées soit roll-ovérisées elles aussi ?
voir (sans sélection multiple) : http://perso.orange.fr/stephane.moriaux/truc/tables_highlight_rows_fr variante (celulles de même contenu): http://perso.orange.fr/stephane.moriaux/truc/tables_highlight_cells_fr
Merci à tous pour vos réponses
A force de travail je suis arrivé à une petite maquette... Le tr:hiver ne fonctionnant pas sur IE, et l'équivalent réalisé avec hover:expression étant désespéremment lent, je me suis tourné vers un parcours de l'arbre dom et affecter à chaque TR un onmouseover et un onmouseout. Je voulais au passage lancer un onclick pour la sélection, mais ça ne fonctionne pas...
bon, là, je refile une fois de plus ma méthode CSS+FF/JS+IE car ça m'agace dur dur de voir sur la démo, que mon FF va se farcir des onmouse complètement inutiles.
On entre dans LigneCliquees à chaque passage sur cette ligne, et il n'y a rien qui se déclenche lorsque l'on clique sur une cellule...
ben non, ça a déjà gueulé à ttes les lignes au chargement :-)
-- Stephane Moriaux et son [moins] vieux Mac
Laurent Vilday
Exemple dispo ici : http://pgoiffon.free.fr/_temp/datagrid_20060613.html
Ce qui bloque c'est : tableau.tBodies[i].rows[j].onclick = LigneCliquee(this.id);
On entre dans LigneCliquees à chaque passage sur cette ligne, et il n'y a rien qui se déclenche lorsque l'on clique sur une cellule...
Salut Pierre, le problème que tu rencontres est normal. Pour assigner un handler d'event, il faut utiliser une référence.
Hors tu exécutes la fonction au lieu d'assigner sa référence en faisant
element.onclick = LigneCliquee();
Pour assigner la référence, il faut enlever les () qui indiquent qu'on exécute.
element.onclick = LigneCliquee;
Notes les () qui ont disparus, et qui empêchent donc d'envoyer des paramètres. Ce qui est également normal puisque on est la en modèle traditionnel (DOM0) de gestion des events. Ce qui implique
1) la référence est appelé par l'interpréteur avec 1 seul paramètre qui est l'event qui vient d'être appliqué. 2) Ne pas oublier le return true ou return false avant de quitter la fonction afin d'indiquer au navigateur si il doit continuer ou pas l'event. 3) le contexte d'exécution est l'élément HTML d'ou est parti l'event. ainsi avec un code HTML tel que
<a id="xxx">
et du js tel que
var a = document.getElementById('xxx'); a.onclick = function(evt) { alert(this); return false; };
lors du click sur le lien, this representera l'objet javascript du tag a.
si on fait comme dans ton exemple
a.onclick = alert(this);
this ne represente pas le tag a lors de l'exécution, mais la fonction InitTableau() (toujours d'après ton exemple)
Plus de détails sur http://www.quirksmode.org/index.html?/js/introevents.html
Dans ton exemple LigneCliquee() n'a à priori pas besoin de paramètre puisque quand tu fais this.id j'imagine que tu voulais que le *this* soit l'élément HTML. Ce qu'il est bien dans le modèle DOM0 d'events que tu utilises ici.
Donc toujours pour ton exemple, remplace la fonction LigneCliquee par ceci :
function LigneCliquee() { this.className = "tr-select"; return false; }
Si tu veux absolument conserver l'utilisation des paramètres, il faudra alors passer par une référence de fonction anonyme, comme tu as fait pour les mouseover et out de ton exemple :
[HS par rapport au pb d'origine] Je vois que tu utilises la fonction alert pour debugger. C'est imo une mauvaise habitude, on a vite fait à se retrouver dans une boucle infinie qu'on arrive plus a arreter autrement qu'en tuant la tache.
Je préconise, à défaut d'une gestion des erreurs plus évoluées, ça :
function alerter(txt) { if ( alerter._continuer ) { alerter._continuer = window.confirm(txt); } } alerter._continuer = true;
Ainsi, au lieu de faire *alert(txt)* et d'avoir une bête boite d'alerte on fait *alerter(txt)* et on obtient la même bête boite d'alerte sauf qu'en cliquant sur le bouton cancel on arrête ces foutues alertes. Ce qui permet de reprendre la main quand qqchose boucle :p
J'ai repris ton exemple pour en faire un qui fonctionne (sauf IE mac je parie parce que y'a encore un truc qui va pas plus plaire, mais euh, tant pis, y'a des experts du sujet dans le coin si t'as un soucis :)
http://mokhet.com/tests/pierregoiffon.html
-- laurent
Exemple dispo ici :
http://pgoiffon.free.fr/_temp/datagrid_20060613.html
Ce qui bloque c'est :
tableau.tBodies[i].rows[j].onclick = LigneCliquee(this.id);
On entre dans LigneCliquees à chaque passage sur cette ligne, et il n'y
a rien qui se déclenche lorsque l'on clique sur une cellule...
Salut Pierre, le problème que tu rencontres est normal. Pour assigner un
handler d'event, il faut utiliser une référence.
Hors tu exécutes la fonction au lieu d'assigner sa référence en faisant
element.onclick = LigneCliquee();
Pour assigner la référence, il faut enlever les () qui indiquent qu'on
exécute.
element.onclick = LigneCliquee;
Notes les () qui ont disparus, et qui empêchent donc d'envoyer des
paramètres. Ce qui est également normal puisque on est la en modèle
traditionnel (DOM0) de gestion des events. Ce qui implique
1) la référence est appelé par l'interpréteur avec 1 seul paramètre qui
est l'event qui vient d'être appliqué.
2) Ne pas oublier le return true ou return false avant de quitter la
fonction afin d'indiquer au navigateur si il doit continuer ou pas l'event.
3) le contexte d'exécution est l'élément HTML d'ou est parti l'event.
ainsi avec un code HTML tel que
<a id="xxx">
et du js tel que
var a = document.getElementById('xxx');
a.onclick = function(evt) { alert(this); return false; };
lors du click sur le lien, this representera l'objet javascript du tag a.
si on fait comme dans ton exemple
a.onclick = alert(this);
this ne represente pas le tag a lors de l'exécution, mais la fonction
InitTableau() (toujours d'après ton exemple)
Plus de détails sur
http://www.quirksmode.org/index.html?/js/introevents.html
Dans ton exemple LigneCliquee() n'a à priori pas besoin de paramètre
puisque quand tu fais this.id j'imagine que tu voulais que le *this*
soit l'élément HTML. Ce qu'il est bien dans le modèle DOM0 d'events que
tu utilises ici.
Donc toujours pour ton exemple, remplace la fonction LigneCliquee par ceci :
function LigneCliquee()
{
this.className = "tr-select";
return false;
}
Si tu veux absolument conserver l'utilisation des paramètres, il faudra
alors passer par une référence de fonction anonyme, comme tu as fait
pour les mouseover et out de ton exemple :
[HS par rapport au pb d'origine]
Je vois que tu utilises la fonction alert pour debugger. C'est imo une
mauvaise habitude, on a vite fait à se retrouver dans une boucle infinie
qu'on arrive plus a arreter autrement qu'en tuant la tache.
Je préconise, à défaut d'une gestion des erreurs plus évoluées, ça :
function alerter(txt)
{
if ( alerter._continuer )
{
alerter._continuer = window.confirm(txt);
}
}
alerter._continuer = true;
Ainsi, au lieu de faire *alert(txt)* et d'avoir une bête boite d'alerte
on fait *alerter(txt)* et on obtient la même bête boite d'alerte sauf
qu'en cliquant sur le bouton cancel on arrête ces foutues alertes. Ce
qui permet de reprendre la main quand qqchose boucle :p
J'ai repris ton exemple pour en faire un qui fonctionne (sauf IE mac je
parie parce que y'a encore un truc qui va pas plus plaire, mais euh,
tant pis, y'a des experts du sujet dans le coin si t'as un soucis :)
Exemple dispo ici : http://pgoiffon.free.fr/_temp/datagrid_20060613.html
Ce qui bloque c'est : tableau.tBodies[i].rows[j].onclick = LigneCliquee(this.id);
On entre dans LigneCliquees à chaque passage sur cette ligne, et il n'y a rien qui se déclenche lorsque l'on clique sur une cellule...
Salut Pierre, le problème que tu rencontres est normal. Pour assigner un handler d'event, il faut utiliser une référence.
Hors tu exécutes la fonction au lieu d'assigner sa référence en faisant
element.onclick = LigneCliquee();
Pour assigner la référence, il faut enlever les () qui indiquent qu'on exécute.
element.onclick = LigneCliquee;
Notes les () qui ont disparus, et qui empêchent donc d'envoyer des paramètres. Ce qui est également normal puisque on est la en modèle traditionnel (DOM0) de gestion des events. Ce qui implique
1) la référence est appelé par l'interpréteur avec 1 seul paramètre qui est l'event qui vient d'être appliqué. 2) Ne pas oublier le return true ou return false avant de quitter la fonction afin d'indiquer au navigateur si il doit continuer ou pas l'event. 3) le contexte d'exécution est l'élément HTML d'ou est parti l'event. ainsi avec un code HTML tel que
<a id="xxx">
et du js tel que
var a = document.getElementById('xxx'); a.onclick = function(evt) { alert(this); return false; };
lors du click sur le lien, this representera l'objet javascript du tag a.
si on fait comme dans ton exemple
a.onclick = alert(this);
this ne represente pas le tag a lors de l'exécution, mais la fonction InitTableau() (toujours d'après ton exemple)
Plus de détails sur http://www.quirksmode.org/index.html?/js/introevents.html
Dans ton exemple LigneCliquee() n'a à priori pas besoin de paramètre puisque quand tu fais this.id j'imagine que tu voulais que le *this* soit l'élément HTML. Ce qu'il est bien dans le modèle DOM0 d'events que tu utilises ici.
Donc toujours pour ton exemple, remplace la fonction LigneCliquee par ceci :
function LigneCliquee() { this.className = "tr-select"; return false; }
Si tu veux absolument conserver l'utilisation des paramètres, il faudra alors passer par une référence de fonction anonyme, comme tu as fait pour les mouseover et out de ton exemple :
[HS par rapport au pb d'origine] Je vois que tu utilises la fonction alert pour debugger. C'est imo une mauvaise habitude, on a vite fait à se retrouver dans une boucle infinie qu'on arrive plus a arreter autrement qu'en tuant la tache.
Je préconise, à défaut d'une gestion des erreurs plus évoluées, ça :
function alerter(txt) { if ( alerter._continuer ) { alerter._continuer = window.confirm(txt); } } alerter._continuer = true;
Ainsi, au lieu de faire *alert(txt)* et d'avoir une bête boite d'alerte on fait *alerter(txt)* et on obtient la même bête boite d'alerte sauf qu'en cliquant sur le bouton cancel on arrête ces foutues alertes. Ce qui permet de reprendre la main quand qqchose boucle :p
J'ai repris ton exemple pour en faire un qui fonctionne (sauf IE mac je parie parce que y'a encore un truc qui va pas plus plaire, mais euh, tant pis, y'a des experts du sujet dans le coin si t'as un soucis :)
http://mokhet.com/tests/pierregoiffon.html
-- laurent
Laurent Vilday
voir (sans sélection multiple) : http://perso.orange.fr/stephane.moriaux/truc/tables_highlight_rows_fr variante (celulles de même contenu): http://perso.orange.fr/stephane.moriaux/truc/tables_highlight_cells_fr
grrr, ca m'apprendre a recharger les news entre le moment ou je commence à répondre et le moment ou je valide, désolé du doublon, Stéphane avait déjà tout bien répondu.
A force de travail je suis arrivé à une petite maquette... Le tr:hiver ne fonctionnant pas sur IE, et l'équivalent réalisé avec hover:expression étant désespéremment lent, je me suis tourné vers un parcours de l'arbre dom et affecter à chaque TR un onmouseover et un onmouseout. Je voulais au passage lancer un onclick pour la sélection, mais ça ne fonctionne pas...
bon, là, je refile une fois de plus ma méthode CSS+FF/JS+IE car ça m'agace dur dur de voir sur la démo, que mon FF va se farcir des onmouse complètement inutiles.
Oui, totalement d'accord, mais est-ce que un behavior IE est réellement plus lent comme le souligne PG ?
-- laurent
voir (sans sélection multiple) :
http://perso.orange.fr/stephane.moriaux/truc/tables_highlight_rows_fr
variante (celulles de même contenu):
http://perso.orange.fr/stephane.moriaux/truc/tables_highlight_cells_fr
grrr, ca m'apprendre a recharger les news entre le moment ou je commence
à répondre et le moment ou je valide, désolé du doublon, Stéphane avait
déjà tout bien répondu.
A force de travail je suis arrivé à une petite maquette... Le tr:hiver
ne fonctionnant pas sur IE, et l'équivalent réalisé avec
hover:expression étant désespéremment lent, je me suis tourné vers un
parcours de l'arbre dom et affecter à chaque TR un onmouseover et un
onmouseout. Je voulais au passage lancer un onclick pour la sélection,
mais ça ne fonctionne pas...
bon, là, je refile une fois de plus ma méthode CSS+FF/JS+IE
car ça m'agace dur dur de voir sur la démo, que mon FF va se farcir des
onmouse complètement inutiles.
Oui, totalement d'accord, mais est-ce que un behavior IE est réellement
plus lent comme le souligne PG ?
voir (sans sélection multiple) : http://perso.orange.fr/stephane.moriaux/truc/tables_highlight_rows_fr variante (celulles de même contenu): http://perso.orange.fr/stephane.moriaux/truc/tables_highlight_cells_fr
grrr, ca m'apprendre a recharger les news entre le moment ou je commence à répondre et le moment ou je valide, désolé du doublon, Stéphane avait déjà tout bien répondu.
A force de travail je suis arrivé à une petite maquette... Le tr:hiver ne fonctionnant pas sur IE, et l'équivalent réalisé avec hover:expression étant désespéremment lent, je me suis tourné vers un parcours de l'arbre dom et affecter à chaque TR un onmouseover et un onmouseout. Je voulais au passage lancer un onclick pour la sélection, mais ça ne fonctionne pas...
bon, là, je refile une fois de plus ma méthode CSS+FF/JS+IE car ça m'agace dur dur de voir sur la démo, que mon FF va se farcir des onmouse complètement inutiles.
Oui, totalement d'accord, mais est-ce que un behavior IE est réellement plus lent comme le souligne PG ?
-- laurent
ASM
voir (sans sélection multiple) : http://perso.orange.fr/stephane.moriaux/truc/tables_highlight_rows_fr variante (celulles de même contenu): http://perso.orange.fr/stephane.moriaux/truc/tables_highlight_cells_fr
grrr, ca m'apprendre a recharger les news entre le moment ou je commence à répondre et le moment ou je valide, désolé du doublon, Stéphane avait déjà tout bien répondu.
Comme déjà dit par ailleurs, tes interventions (events étoussa) sont toujours les bienvenues, car on voit bien que tu sais de quoi tu parles, et on en apprend à chaque foi. (bon ... ça rentre pas fort ni longtemps, n'oublie pas de revenir souvent enfoncer le clou)
bon, là, je refile une fois de plus ma méthode CSS+FF/JS+IE car ça m'agace dur dur de voir sur la démo, que mon FF va se farcir des onmouse complètement inutiles.
Oui, totalement d'accord, mais est-ce que un behavior IE est réellement plus lent comme le souligne PG ?
D'une part je ne sais ce qu'est un behavior D'autre part est-ce qu'un behavior interpellera mon IE (Mac) ? ... j'en doute fort. D'une part, je pense que oui un roll-over JS est plus lent que les css (même si pour qques rows ça n'est pas vraiment perceptible) D'autre part, je pense que oui dès qu'on a plus de monde à gérer D'autre part, par principe, y pas d'raison qu'on se surcharge le job du brouteur alors que des css sont là pour l'emoustiller et qu'il en rafolle.
En tous cas IE et les tables et les affectations de class ... :-( http://perso.orange.fr/stephane.moriaux/truc/tables_un-sur-deux_rows_fr ... pourrait mieux faire (puisque d'autres le font)
-- Stephane Moriaux et son [moins] vieux Mac
voir (sans sélection multiple) :
http://perso.orange.fr/stephane.moriaux/truc/tables_highlight_rows_fr
variante (celulles de même contenu):
http://perso.orange.fr/stephane.moriaux/truc/tables_highlight_cells_fr
grrr, ca m'apprendre a recharger les news entre le moment ou je commence
à répondre et le moment ou je valide, désolé du doublon, Stéphane avait
déjà tout bien répondu.
Comme déjà dit par ailleurs, tes interventions (events étoussa) sont
toujours les bienvenues, car on voit bien que tu sais de quoi tu parles,
et on en apprend à chaque foi.
(bon ... ça rentre pas fort ni longtemps, n'oublie pas de revenir
souvent enfoncer le clou)
bon, là, je refile une fois de plus ma méthode CSS+FF/JS+IE
car ça m'agace dur dur de voir sur la démo, que mon FF va se farcir
des onmouse complètement inutiles.
Oui, totalement d'accord, mais est-ce que un behavior IE est réellement
plus lent comme le souligne PG ?
D'une part je ne sais ce qu'est un behavior
D'autre part est-ce qu'un behavior interpellera mon IE (Mac) ?
... j'en doute fort.
D'une part, je pense que oui un roll-over JS est plus lent que les css
(même si pour qques rows ça n'est pas vraiment perceptible)
D'autre part, je pense que oui dès qu'on a plus de monde à gérer
D'autre part, par principe, y pas d'raison qu'on se surcharge le job du
brouteur alors que des css sont là pour l'emoustiller et qu'il en rafolle.
En tous cas IE et les tables et les affectations de class ... :-(
http://perso.orange.fr/stephane.moriaux/truc/tables_un-sur-deux_rows_fr
... pourrait mieux faire (puisque d'autres le font)
voir (sans sélection multiple) : http://perso.orange.fr/stephane.moriaux/truc/tables_highlight_rows_fr variante (celulles de même contenu): http://perso.orange.fr/stephane.moriaux/truc/tables_highlight_cells_fr
grrr, ca m'apprendre a recharger les news entre le moment ou je commence à répondre et le moment ou je valide, désolé du doublon, Stéphane avait déjà tout bien répondu.
Comme déjà dit par ailleurs, tes interventions (events étoussa) sont toujours les bienvenues, car on voit bien que tu sais de quoi tu parles, et on en apprend à chaque foi. (bon ... ça rentre pas fort ni longtemps, n'oublie pas de revenir souvent enfoncer le clou)
bon, là, je refile une fois de plus ma méthode CSS+FF/JS+IE car ça m'agace dur dur de voir sur la démo, que mon FF va se farcir des onmouse complètement inutiles.
Oui, totalement d'accord, mais est-ce que un behavior IE est réellement plus lent comme le souligne PG ?
D'une part je ne sais ce qu'est un behavior D'autre part est-ce qu'un behavior interpellera mon IE (Mac) ? ... j'en doute fort. D'une part, je pense que oui un roll-over JS est plus lent que les css (même si pour qques rows ça n'est pas vraiment perceptible) D'autre part, je pense que oui dès qu'on a plus de monde à gérer D'autre part, par principe, y pas d'raison qu'on se surcharge le job du brouteur alors que des css sont là pour l'emoustiller et qu'il en rafolle.
En tous cas IE et les tables et les affectations de class ... :-( http://perso.orange.fr/stephane.moriaux/truc/tables_un-sur-deux_rows_fr ... pourrait mieux faire (puisque d'autres le font)
-- Stephane Moriaux et son [moins] vieux Mac
ASM
J'ai repris ton exemple pour en faire un qui fonctionne (sauf IE mac je parie parce que y'a encore un truc qui va pas plus plaire, mais euh, tant pis, y'a des experts du sujet dans le coin si t'as un soucis :)
Pas de bol ! ça fonctionne très bien sous IE Mac ! :-)
Manque plus que le roll-over sur les sélectionnés et la sélection par lasso :-)
http://mokhet.com/tests/pierregoiffon.html
Bon, ça c'est du JS trop technique pour moi.
-> outre les fonctions déclarées à l'intérieur d'une autre, comment imaginer qu'on puisse faire ça : this._selected = !this._selected; et en plus (à ce que je comprends?) en affubler un TR
On peut attribuer comme ça n'inporte quoi à n'importe quel élément ?
-- Stephane Moriaux et son [moins] vieux Mac
J'ai repris ton exemple pour en faire un qui fonctionne (sauf IE mac je
parie parce que y'a encore un truc qui va pas plus plaire, mais euh,
tant pis, y'a des experts du sujet dans le coin si t'as un soucis :)
Pas de bol ! ça fonctionne très bien sous IE Mac ! :-)
Manque plus que le roll-over sur les sélectionnés
et la sélection par lasso :-)
http://mokhet.com/tests/pierregoiffon.html
Bon, ça c'est du JS trop technique pour moi.
-> outre les fonctions déclarées à l'intérieur d'une autre,
comment imaginer qu'on puisse faire ça :
this._selected = !this._selected;
et en plus (à ce que je comprends?) en affubler un TR
On peut attribuer comme ça n'inporte quoi à n'importe quel élément ?
J'ai repris ton exemple pour en faire un qui fonctionne (sauf IE mac je parie parce que y'a encore un truc qui va pas plus plaire, mais euh, tant pis, y'a des experts du sujet dans le coin si t'as un soucis :)
Pas de bol ! ça fonctionne très bien sous IE Mac ! :-)
Manque plus que le roll-over sur les sélectionnés et la sélection par lasso :-)
http://mokhet.com/tests/pierregoiffon.html
Bon, ça c'est du JS trop technique pour moi.
-> outre les fonctions déclarées à l'intérieur d'une autre, comment imaginer qu'on puisse faire ça : this._selected = !this._selected; et en plus (à ce que je comprends?) en affubler un TR
On peut attribuer comme ça n'inporte quoi à n'importe quel élément ?