Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Faire cohabiter 2 scripts

10 réponses
Avatar
MIMATA
Bonjour,

Que faut'il changer dans les 2 scripts ci-dessous pour que les 2
fonctions windows.onload fonctionnent ?

Voici le code de la page pour faire des tests :

<html>

<head>
<meta http-equiv="Content-Type" content="text/html;
charset=windows-1252">
<title>Accueil</title>
<link rel="stylesheet" type="text/css" media="screen"
href="http://xhtml.css.free.fr/_CSS/style.css" />

<script type="text/javascript">
<!-- Liens externes dans une nouvelle fenêtre -->
function externalLinks() {
if (!document.getElementsByTagName) return;
var anchors = document.getElementsByTagName("a");
for (var i=0; i<anchors.length; i++) {
var anchor = anchors[i];
if (anchor.getAttribute("href") && anchor.getAttribute("rel") ==
"external") anchor.target = "_blank";}
}
window.onload=externalLinks;

<!-- Afficher/Masquer les sous rubriques du menu -->
function montre(id) {
var d = document.getElementById(id);
for (var i = 1; i<=10; i++) {
if (document.getElementById('smenu'+i))
{document.getElementById('smenu'+i).style.display='none';}
}
if (d) {d.style.display='block';}
}
window.onload=montre;

</script>

</head>

<body>
<div>
<dl id="menu">
<dt onclick="javascript:montre('smenu1');">Accueil</dt>
<dd id="smenu1">
<ul>
<li><a href="page-accueil-1.htm">Accueil</a></li>
<li><a href="page-accueil-2.htm">Bienvenue</a></li>
</ul>
<dt onclick="javascript:montre('smenu2');">Structurer une page</dt>
<dd id="smenu2">
<ul>
<li><a href="page-structure.htm">Structure d&#39;une page</a></li>
<li><a href="page-doctype.htm">Déclarer le DTD</a></li>
<li><a href="page-meta.htm">Les balises meta</a></li>
</ul>
</dd>
</dl>
</div>
<a href="http://www.openweb.eu.org" rel="external">OpenWeb</a>
</html>

Merci


--
MIMATA
----------------------------------------------------------------------------------------------------------------------
Astronomie sur PLANETE ASTRONOMIE : http://planete.astronomie.free.fr
XHTML & CSS sur : http://xhtml.css.free.fr

10 réponses

Avatar
Olivier Azeau
MIMATA wrote:
Bonjour,

Que faut'il changer dans les 2 scripts ci-dessous pour que les 2
fonctions windows.onload fonctionnent ?


Peut etre un truc du genre :
window.onload = function() { externalLinks(); montre(); }

Avatar
MIMATA
MIMATA wrote:
Bonjour,

Que faut'il changer dans les 2 scripts ci-dessous pour que les 2
fonctions windows.onload fonctionnent ?


Olivier Azeau wrote:
Peut etre un truc du genre :
window.onload = function() { externalLinks(); montre(); }


Super ! C'est exactement ça. Merci beaucoup.


--
MIMATA
----------------------------------------------------------------------------------------------------------------------
Astronomie sur PLANETE ASTRONOMIE : http://planete.astronomie.free.fr
XHTML & CSS sur : http://xhtml.css.free.fr


Avatar
LEMAIRE Mathieu
Salut c génial ton external_links.. mais y aurait pas moyen
d'automatiser la détection des liens externes ?

Du genre attribbuer target='_blank' aux liens vers des pages != serveur ?

Merci

--
Maz
www.eaurizon.org
Avatar
Démosthene

Olivier Azeau wrote:
Peut etre un truc du genre :
window.onload = function() { externalLinks(); montre(); }




Bonjour,

Ce n'est pas le cas ici, mais méfiez-vous une prochaine fois : lorsque
vous assemblez plusieurs scripts qui viennent d'horizon différents, les
variables globales peuvent entrer en conflis.

Bonne journée

D.


Avatar
MIMATA
y aurait pas moyen d'automatiser la détection des liens externes ?


Si. Le problème, c'est que pour que cela fonctionne, il faut mettre tous
les liens en absolut et faire une détection du nom de domaine dans l'url
pour déterminer si le lien doit ouvrir une nouvelle fenêtre ou non.

Le système que j'ai trouvé utilise une case à cocher qui permet au
visiteur de choisir s'il veut ouvrir les liens externes dans une
nouvelle fenêtre ou non. Par ailleurs, il faut cocher cette case à
chaque fois qu'on arrive sur une nouvelle page ce qui est plutôt pas
pratique. Si quelqu'un connait un système avec un cookie pour conserver
le choix du visiteur, ça m'intéresse.

Voici le code :
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Liens externes</title>
<script type="text/javascript">
// JavaScript targeters adapted from holovaty.com
function linksInNewWindow(a) {
var b=a?"xhtml.css.free.fr":"_self";
var c=document.links;
for(var i=0;i<c.length;i++)
{if(c[i].href.search("xhtml.css.free.fr")==-1) c[i].target=b};
var date=new Date();
date.setTime(date.getTime()+(14*24*60*60*1000));
document.cookie=a?"newwin=true;
expires="+date.toGMTString()+";":"newwinúlse;";
}
</script>

</head>

<body>
<input type="checkbox" onclick="linksInNewWindow(this.checked);"
id="linksnewwin" onkeypress="linksInNewWindow(this.checked);" />
<label for="linksnewwin">Cochez cette case pour ouvrir les liens
externes dans une nouvelle fenêtre</label>
<p><a href="http://xhtml.css.free.fr">http://xhtml.css.free.fr</a> </p>
<p><a
href="http://planete.astronomie.free.fr">http://planete.astronomie.free.fr</a>
</p>
<p><a href="index.htm">Accueil</a></p>
</body>

</html>

Explication :
- le script est paramétré pour détecter les lien contenant
xhtml.css.free.fr
- j'ai lis 3 liens pour illustrer la fonction, un lien interne en
absolut, un lien externe et un lien interne en relatif. Si vous ne
cochez pas la cace, tous s'ouvrent dans la même fenêtre. Si vous cochez,
le 1er lien s'ouvre dans la même fenêtre, le deuxième ouvre une autre
fenêtre (jusque là, tout est normal) ; en revanche, le lien relatif ne
se comprte pas correctement et ouvre aussi une nouvelle fenêtre alors
que ce n'est pas ce que l'on veut. La solution est donc de mettre tous
les liens en absolut ce qui peut être gênant.


Du genre attribbuer target='_blank' aux liens vers des pages !=serveur
?


Euh...quoi ?! Je comprends pas. Si tu écris target="_blank" dans ton
code, pas besoin de définir que ça ouvre une nouvelle fenêtre puisque
c'est déjà le comportement par défaut de cet attribut (avec cette
valeur). De toute façon, ce truc pour ouvrir des pages dans une nouvelle
fenêtre n'est nécessaire que pour du html strict ou xhtml strict pour
lesquels l'attribut target n'est plus permis. Pour diverses raisons,
ouvrir de nouvelles fenêtres perturbe la navigation de certaines
personnes (notamment mal voyantes), je pense donc qu'il faut laisser le
choix aux visiteurs et leur donner la possibilité d'ouvrir les liens
dans la même fenêtre ou dans une nouvelle. C'est pourquoi, sur mon site
xhtml.css.free.fr, le comportement par défaut des liens est celui
préconisé (c'est-à-dire pas d'ouverture de nouvelles fenêtre) mais j'ai
ajouté, après chaque lien, une petite icone permettant d'ouvrir le lien
dans une nouvelle fenêtre. Le visiteur à le choix et je peux proposer
sans crainte des liens vers d'autres sites sans que cela fasse
disparaitre "mon" visiteur. C'est lui qui choisit.


--
MIMATA
----------------------------------------------------------------------------------------------------------------------
Astronomie sur PLANETE ASTRONOMIE : http://planete.astronomie.free.fr
XHTML & CSS sur : http://xhtml.css.free.fr

Avatar
MIMATA
Evidemment, 2 erreurs dans le body de mon précédent post : mettre :

<body>
<input type="checkbox" onclick="linksInNewWindow(this.checked);"
id="linksnewwin" onkeypress="linksInNewWindow(this.checked);" />
<label for="linksnewwin">Cochez cette case pour ouvrir les liens
externes dans une nouvelle fenêtre</label>
<p><a href="http://xhtml.css.free.fr">http://xhtml.css.free.fr</a> </p>
<p><a
href="http://planete.astronomie.free.fr">http://planete.astronomie.free.fr</a></p>
<p><a href="index.htm">Accueil</a></p>
</body>

--
MIMATA
----------------------------------------------------------------------------------------------------------------------
Astronomie sur PLANETE ASTRONOMIE : http://planete.astronomie.free.fr
XHTML & CSS sur : http://xhtml.css.free.fr
Avatar
MIMATA
Par ailleurs, il faut cocher cette case à
chaque fois qu'on arrive sur une nouvelle page ce qui est plutôt pas
pratique. Si quelqu'un (Aucune suggestion) un système avec un cookie pour
conserver

le choix du visiteur, ça m'intéresse.


Euh...je sens que j'ai dit une connerie en ce qui concerne le cookie. J'y
connais rien en javascript mais en y regardant de plus près, il semble que
le script cré un cookie qui doit certainement faire ce que je disais.
Oubliez.

MIMATA
----------------------------------------------------------------------------
------------------------------------------
Astronomie sur PLANETE ASTRONOMIE : http://planete.astronomie.free.fr
XHTML & CSS sur : http://xhtml.css.free.fr

Avatar
LEMAIRE Mathieu
que ce n'est pas ce que l'on veut. La solution est donc de mettre tous
les liens en absolut ce qui peut être gênant.


Effectivement.. c pas possible autrement. A moins de faire intervenir
PHP, du genre :

function check_link(link_string) {
if (file_exists(link_string))
return "href='".link_string."'";
else
return "href='".link_string."' target='_blank'";
}

et mettre partout

<a check_link('adresse.php')>BOUH</a>


Du genre attribbuer target='_blank' aux liens vers des pages !=serveur ?



Euh...quoi ?! Je comprends pas. Si tu écris target="_blank" dans ton
code, pas besoin de définir que ça ouvre une nouvelle fenêtre puisque
c'est déjà le comportement par défaut de cet attribut (avec cette


euh.. non, je voulais dire avec JS

valeur). De toute façon, ce truc pour ouvrir des pages dans une nouvelle
fenêtre n'est nécessaire que pour du html strict ou xhtml strict pour
lesquels l'attribut target n'est plus permis. Pour diverses raisons,
ouvrir de nouvelles fenêtres perturbe la navigation de certaines
personnes (notamment mal voyantes), je pense donc qu'il faut laisser le
choix aux visiteurs et leur donner la possibilité d'ouvrir les liens
dans la même fenêtre ou dans une nouvelle. C'est pourquoi, sur mon site
xhtml.css.free.fr, le comportement par défaut des liens est celui
préconisé (c'est-à-dire pas d'ouverture de nouvelles fenêtre) mais j'ai
ajouté, après chaque lien, une petite icone permettant d'ouvrir le lien
dans une nouvelle fenêtre. Le visiteur à le choix et je peux proposer
sans crainte des liens vers d'autres sites sans que cela fasse
disparaitre "mon" visiteur. C'est lui qui choisit.


Ah d'accord. C'est vrai. Dans ce cas, on utilise ta fonction, pour lui
demander une fois ses préférences..

@+

--
Maz


Avatar
MIMATA
<p><a href="http://xhtml.css.free.fr">http://xhtml.css.free.fr</a></p>
<p><a
href="http://planete.astronomie.free.fr">http://planete.astronomie.free.fr</a></p>



Bon, c'est bizzare, la création automatique des liens fait qu'ils sont
mal réécris quand je les poste pourtant à la base, le code est bon,
corrigez vous même.

Avatar
Thibaut Allender
<p><a href="http://xhtml.css.free.fr">http://xhtml.css.free.fr</a></p>
<p><a
href="http://planete.astronomie.free.fr">http://planete.astronomie.free.fr</a></p>


Bon, c'est bizzare, la création automatique des liens fait qu'ils sont
mal réécris quand je les poste pourtant à la base, le code est bon,
corrigez vous même.


avec un vrai newsreader il n'y a aucun problème... balance donc cette
bouse de Outlook (j'ai le droit, on est vendredi...)

--
thibaut allender | freelance | http://capsule.org