Target automatique pour liens

Script javascript pour ouvrir un lien dans une nouvelle fenêtre si le lien est externe, dans la même fenêtre si le lien est interne au site.

Ce script ouvrira automatiquement les liens externes (commençant par
http://, www et ftp) dans une nouvelle fenetre et les liens internes dans la parent.

<script language="JavaScript">

var site = '#URL_SITE_SPIP';

function targetLinks() {
 var str;
 var where;
 where="_blank";

 for(var i=0;i<=(document.links.length-1);i++) {
  str=document.links[i].href;
  if((str.search(site)==-1)&&((str.search('http://')!=-1)
  ||(str.search('www.')!=-1)
  ||(str.search('ftp://')!=-1))){
   document.links[i].target=where;
  }
 }
}

</script>

N’oubliez pas d’appeler le script dans le body :

<body onLoad="targetLinks();">

d’après un message de Régis sur la liste SPIP
http://munci.little-pinguin.net

Dernière modification de cette page le 24 juillet 2009

Discussion

7 discussions

  • paysdetrie

    Salut à tous !

    Je recherche un moyen pour générer des articles SPIP en fonction d’un mot clé cliqué, MAIS sur la même page.

    Pensez-vous que le target automatique pour lien est LA SOLUTION ?

    Merci !

    Répondre à ce message

  • Musicattiva

    merci !!!

    Grazie dall’Italia.

    Perfect script !

    Répondre à ce message

  • 1

    Le script marche bien dans Firefox et Konqueror. Par contre j’ai des problèmes dans IE6 : les liens internes ouvrent également une nouvelle fenêtre. Personne n’as eu ce problème ? Qu’est-ce qui pourrait être mon erreur ? Comment éviter cela ?
    Des idées ?

    Merci d’avance

    Joz

    • Je me réponds moi même :

      j’ai changé la ligne

      if((str.search(site)==-1)&&((str.search(’http://’) !=-1)

      en

      if((str.search(site)==-1)&&((str.search(’http://www’) !=-1)

      Cela a l’ai de fonctionner correctement maintenant, si qqun voit un problème éventuelle avec cette solution merci de m’avertir.

      Joz

    Répondre à ce message

  • Excellent !

    Et si on a acquis plueisuers noms de domaine pour le même site, que doit-on modifier dans la fonction ?

    Merci !

    Répondre à ce message

  • Sauf erreur,le script n’est pas compatible avec IE7 Beta 2. Le lien s’ouvre toujours dans la même fenêtre.

    Répondre à ce message

  • 1

    ou c’est t’y qu’on met le script javascript ? je suis super super débutant !!!!

    • Si tu n’as pas encore trouvé la solution, il faut coller ce script dans la partie

      <head> ... </head>

      de tes pages html (par exemple sommaire.html, rubrique.html) c’est-à-dire dans les pages où tu veux que ça marche comme ça.

      La balise

      <body>

      est à modifier comme décrit ...
      Mais comme je l’ai dit, chez moi ça ouvre tous les liens (externes et internes) dans une nouvelle fenêtre et ça fait plus de mal que du bien.

      un touche pomme enfoncée +clic (sous mac) sur le lien et le celui-ci s’ouvre dans un nouvel onglet, avec Firefox sous windows ça devrait être ctrl clic sur le lien pour obtenir la même chose.

      reste à faire une petite introduction dans son site sur le bon usage des navigateurs (et le bon choix surtout) ;-)

    Répondre à ce message

  • marche trop bien chez moi, tous les liens s’ouvrent dans une nouvelle fenêtre ... :-(

    Vaut mieux recourir au tab-browsing ;-)

    Répondre à ce message

Ajouter un commentaire

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom