11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Je viens à vous dans l'espoir de trouver une solution à mon problème. Je début en javascript, j'ai donc du mal à trouver comment faire certaines opérations qui peuvent paraître simple.

Bon voilà, j'ai une page dans laquelle je doit mettre plusieurs liens qui devront s'ouvrir dans une nouvelle fenêtre, un peu comme un pop up sans en être un. Pour cela j'utilise "window.open".

Bon, j'ai réussi à le faire sur le premier lien de la page, seulement voilà, cette page comporte plusieurs liens et j'aimerais faire en sorte que le script puisse détecter la "href" qui lui est lié... je ne sais pas trop si je suis claire...

La page en question
Seul le premier lien "procédure d'installation" fonctionne comme décrit plus haut.

Pour l'instant mon code ressemble à ceci:

function procedure()
{
window.open('../../software/procedures/prodecure_FL-A.html','Procédure d\'installation FL-A','menubar=no, scrollbars=yes, top=100, left=100, width=600, height=500');
}

Et dans mon html je fait comme ça:

<p>
<a onclick="javascript:procedure();" href="">Procédure d'installation</a>
de la mise à jour
</p>


Si je veux faire la même chose pour tous les autres liens je devrait faire un truc comme ça:

function fla_fr()
{
	window.open('../../software/procedures/prodecure_FL-A_fr.html','menubar=no, scrollbars=yes, top=100, left=100, width=600, height=500');
}
function fla_en()
{
	window.open('../../software/procedures/prodecure_FL-A_en.html','menubar=no, scrollbars=yes, top=100, left=100, width=600, height=500');
}
function g4_en()
{
	window.open('../../software/procedures/prodecure_G4_fr.html','menubar=no, scrollbars=yes, top=100, left=100, width=600, height=500');
}
function ir5_fr()
{
	window.open('../../software/procedures/prodecure_IR-5_fr.html','menubar=no, scrollbars=yes, top=100, left=100, width=600, height=500');
}
function ir5_en()
{
	window.open('../../software/procedures/prodecure_IR-5_en.html','menubar=no, scrollbars=yes, top=100, left=100, width=600, height=500');
}
...

Mais on s'entend que c'est pas la meilleur solution...

J'aimerais donc que mon code ressemble d'avantage au premier mais en faisant en sorte d'aller chercher le "href" associer dans le html.
Modifié par juliesunset (25 Aug 2011 - 21:22)
Salut Julie,

Regarde du côté de jQuery et de la méthode each. Par exemple:


$("a").each(function(){ /* En ciblant l'ensemble de tes liens particuliers évidemment */
    $(this).click(function(){
        window.open($(this).attr("href") /* et tes autres paramètres */);
        return false; /* afin d'empècher le comportement habituel du lien - mais je ne sais pas si c'est réellement nécessaire */
    });
});

Modifié par Vaxilart (25 Aug 2011 - 05:26)

function procedure(href)
{
window.open(href,'Procédure d\'installation FL-A','menubar=no, scrollbars=yes, top=100, left=100, width=600, height=500');
return false;
}

<p>
<a onclick="javascript:procedure(this.href);" href="../../software/procedures/prodecure_FL-A.html">Procédure d'installation</a>
de la mise à jour
</p>

Modifié par jb_gfx (25 Aug 2011 - 10:19)
Bonjour!

Vaxilart: J'ai regardé ça un peu, mais je suis pas sûr de bien comprendre... moi pis l'anglais...

jd_gfx: Ah! J'avais essayé avec un "this.href" mais je ne le mettait pas à la bonne place! Bon là ça cible le bon fichier, mais ça ne s'ouvre pas dans une nouvelle fenêtre comme c'était le cas avant.

EDIT: Ah ok, bon je n'avais pas remarqué certains détails dans ton code, jd_gfx, j'ai corrigé. La le fichier s'ouvre simplement dans un nouvelle onglet. Mais il faudrait vraiment que ce soit dans une nouvelle fenêtre.

Mon nouveau code:

function procedure(href)
{
	window.open(href,'menubar=no, scrollbars=yes, top=100, left=100, width=600, height=450');
	return false;
}

Et le HTML:

<p><a onclick="javascript:procedure(this.href);" href="../../software/procedures/prodecure_FL-A_fr.html">Procédure d'installation</a> de la mise à jour</p>

Modifié par juliesunset (25 Aug 2011 - 14:26)
Oups... désolé, j'ai oublié quelques trucs Smiley langue


function procedure(href)
{
window.open(href, [b]'popup'[/b], 'menubar=no, scrollbars=yes, top=100, left=100, width=600, height=450');
return false;
}



<p><a onclick="[b]return[/b] procedure(this.href);" href="../../software/procedures/prodecure_FL-A_fr.html">Procédure d'installation</a> de la mise à jour</p>

Modifié par jb_gfx (25 Aug 2011 - 20:53)
Yes!
Merci beaucoup! Ça fonctionne comme un charme!
J'osais pas utiliser le popup... en revanche pour le return j'aurais pas deviné!

Me reste plus qu'à appliquer ça pour tout mes liens et de convertir mes fichiers pdf en html.

Merci encore!
Non je parlait du "return" dans cette partie:
<p><a onclick="return procedure(this.href);" href="../../software/procedures/prodecure_FL-A_fr.html">Procédure d'installation</a> de la mise à jour</p>
Bon, finalement sous iE8 ça fonctionne pas. La page se load mais dans la même fenêtre, pas dans une nouvelle...
Je déteste iE... mais j'ai pas l'choix d'en prendre compte étant donné que plus de 55% de mes visiteurs proviennent de ce navigateur et de ces 55% la majorité sont sous iE8, je suis pas prête de le voir partir celui-là!

Entouka, merci! Fonctionne très bien maintenant!