OVH Cloud OVH Cloud

[limite neuneu] exploiter en javascript

4 réponses
Avatar
christophe Raverdy
Je préviens tout de suite : je débute, et j'essaye de construire mon propre
code à partir d'un bouquin que les spécialistes reconnaîtront.

Donc, j'ai un fichier html qui présente un ensemble d'ancres sous la forme :

==================================================================
<TABLE BGCOLOR="#424242">
<TR>
<td>
<A NAME=etiquette_42><FONT SIZE=+1>sujet 42</FONT></A>
<P>
Rien à dire pour l'instant...
<P>
</TD>
</TR>
</TABLE>
<P>
<HR>
<P>
==================================================================



J'ai un script qui me permet normalement d'ouvrir le fichier présenté
ci-dessus (cela marche) et atteindre telle ou telle ancre :

==================================================================

...
<script type="text/javascript">
<!--

var fenetreHelp;
function helpoupas()
{
if ((typeof(fenetreHelp)=="undefined") ||
(fenetreHelp.closed==true))
{
creerfenetreHelp();
}
else
{
fenetreHelp.close();
}
}

function creerfenetreHelp()
{
fenetreHelp = window.open (
"help.html", "fenetreHelp",
"width=500,height=150,location=no,toolbar=no,scrollbars=yes,resizable=yes,directories=no,status=no");
}


function help(url)
{
if (typeof(fenetreHelp)=="undefined")
return;
else if (fenetreHelp.closed=true)
return;
var urlhelp = "help.html#"+ url;
fenetreHelp.location.replace(urlhelp);

}
//-->
</script>


...


<A HREF=javascript:creerfenetreHelp()>ouvrir l'aide</A>
<A HREF=javascript:fenetreHelp.close()>fermer l'aide</A>

<FORM>
<INPUT TYPE="button" value="aide" onClick=helpoupas()>
</FORM>

<FORM>
<FONT size=+2>1</FONT>
<INPUT NAME="sujet 1" onFocus=help("sujet_007") >
<BR>
<FONT size=+2>2</FONT>
<INPUT NAME="sujet 2" onFocus=help("sujet_002")>
</FORM>


</BODY>
</HTML>

==================================================================

Résultat des courses : si j'invoque directement help.html#42 ou si j'ouvre
une fenêtre avec cette adresse complète il n'y a pas de problème;

L'événement onClick est bien détecté par contre location.replace n'opère
pas.

Avez-vous une explication ?

par avance, merci.

--

4 réponses

Avatar
O.L.
christophe Raverdy a utilisé son clavier pour écrire :
L'événement onClick est bien détecté par contre location.replace n'opère
pas.

Avez-vous une explication ?


Peut être essayer :
fenetreHelp.document.location.replace(urlhelp);
Mais ce n'est qu'une idée ...

De toute façon, la chose à faire (enfin c'est celle que je fais en
général ^^) est de débugger ton script en lui faisant s'afficher les
données afin de les vérifier et de voir d'où vient le problème.
Remplace :
fenetreHelp.location.replace(urlhelp);
Par :
alert([fenetreHelp, fenetreHelp.location,
fenetreHelp.location.replace, urlhelp]);

Et dis nous ce qu'il te sort.

--
Olivier Ligny
Créateur web free-lance / www.cyber-tamtam.net

Avatar
O.L.
O.L. a formulé la demande :
christophe Raverdy a utilisé son clavier pour écrire :
L'événement onClick est bien détecté par contre location.replace n'opère
pas.

Avez-vous une explication ?


Peut être essayer :
fenetreHelp.document.location.replace(urlhelp);
Mais ce n'est qu'une idée ...

De toute façon, la chose à faire (enfin c'est celle que je fais en général
^^) est de débugger ton script en lui faisant s'afficher les données afin de
les vérifier et de voir d'où vient le problème.
Remplace :
fenetreHelp.location.replace(urlhelp);
Par :
alert([fenetreHelp, fenetreHelp.location, fenetreHelp.location.replace,
urlhelp]);

Et dis nous ce qu'il te sort.


PS : et toujours vérifier dans la config de IE que l'avertissement lors
des erreurs JavaScript est bien activé ! Sinon, dur dur de déboguer ...

--
Olivier Ligny
Créateur web free-lance / www.cyber-tamtam.net


Avatar
ASM
Je préviens tout de suite : je débute, et j'essaye de construire mon propre
code à partir d'un bouquin que les spécialistes reconnaîtront.

Donc, j'ai un fichier html qui présente un ensemble d'ancres sous la forme :

================================================================= > <TABLE BGCOLOR="#424242">
<TR>
<td>
<A NAME=etiquette_42><FONT SIZE=+1>sujet 42</FONT></A>
<P>
Rien à dire pour l'instant...
<P>
</TD>
</TR>
</TABLE>
<P>
<HR>
<P>
================================================================= >


J'ai un script qui me permet normalement d'ouvrir le fichier présenté
ci-dessus (cela marche) et atteindre telle ou telle ancre :

================================================================= >
...
<script type="text/javascript">
<!--

var fenetreHelp;

function helpoupas()
{
if ((typeof(fenetreHelp)=="undefined") ||
(fenetreHelp.closed==true))
{
creerfenetreHelp();
}
else
{
fenetreHelp.close();
}
}


ici : fenetreHelp = window.open (
"help.html", "fenetreHelp",
et tout l'bazzzaard

il faut *absolument* tout sur la même ligne
il faut *absolument* aucun espace
si on vise la compatibilité avec certains navigateurs

function creerfenetreHelp(page) {
fenetreHelp = window.open(page,"fenetreHelp","widthP0,"+
"height0,location=no,toolbar=no,scrollbars=yes,"+
"resizable=yes,directories=no,status=no");
}

var urlHelp='';

function help() {
var url = (urlHelp=='')?
'help.html' :
'help.htm#'+urlHelp;
if (typeof(fenetreHelp)=="undefined" || fenetreHelp.closed=true)
creerfenetreHelp(url);
else
fenetreHelp.location = url;
}

//-->
</script>


...


<A HREF=javascript:creerfenetreHelp()>ouvrir l'aide</A>


<A HREF=javascript:help()>ouvrir l'aide</A>

<A HREF=javascript:fenetreHelp.close()>fermer l'aide</A>

<FORM>
<INPUT TYPE="button" value="aide" onClick=helpoupas()>
</FORM>

<FORM>
<FONT size=+2>1</FONT>
<INPUT NAME="sujet 1" onFocus=help("sujet_007") >


<INPUT NAME="sujet 1" onFocus="urlHelp='sujet_007';" >

<BR>
<FONT size=+2>2</FONT>
<INPUT NAME="sujet 2" onFocus=help("sujet_002")>


<INPUT NAME="sujet 2" onFocus="urlHelp='sujet_002';" >
ou
<INPUT NAME="sujet_002" onFocus="urlHelp=this.name;" >

</FORM>


</BODY>
</HTML>




--
Stephane Moriaux et son [moins] vieux Mac

Avatar
christophe Raverdy
Bonjour. Je fais une réponse collective.


Tout d'abord, je ne connais pas IE (j'utilise linux). j'ai testé avec
Konqueror (3.3) et Mozilla (1.7.7)

Il y a juste un programme qui vérifie que la syntaxe est correcte, la
sémantique étant gérée entre la chaise et le clavier.


Mon principal problème est que l'événement "onFocus" était bien intercepté,
à première vue la fenêtre "moulinait", mais on restait figé en haut de la
fenêtre (la partie # n'était pas interprétée).

J'ai commencé dans le window.open à modifier le paramètre relatif à la barre
de navigation : cela aide à savoir où l'on est :)

A première vue, je cherchais l'étiquette "undefined" :/ (je ne m'en suis pas
rendu compte tout de suite).

J'ai fait un certain nombre de modification (sans traçabilité
malheureusement), tout d'abord avec un lien hypertexte, puis, ce matin, en
réintégrant l'événement onFocus (tout fonctionne).

========================================================== <A HREF=javascript:creerfenetreHelp("sujet_007")><FONT size=+2>?</FONT></A>
<INPUT NAME="sujet 7" onFocus=creerfenetreHelp("sujet_007")>
<BR>
==========================================================
Le code de la fonction help() est le suivant :

function help(url)
{
if (typeof(fenetreHelp)=="undefined")
return;
else if (fenetreHelp.closed=true)
return;
creerfenetreHelp(url);
}

Le code de la fonction creerfenetreHelp est le suivant

function creerfenetreHelp(url)
{
fenetreHelp = window.open ("help.html#"+url,
"fenetreHelp",
"widthP0,height0,location=yes,toolbar=no,scrollbars=yes,resizable=yes,directories=no,status=no");
}

window.location.replace me semble non portable. La principale différence est
donc que je recrée le fenêtre si et seulement si d'ailleurs elle est déjà
ouverte (cela bouffe-t-il des ressources ?), par contre le fonctionnement a
l'air propre et correspond en apparence à ce que j'attends.

Cette solution appelle-t-elle des commentaires de votre part ?

--