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

updated on 24 July 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!

    Reply to this message

  • Musicattiva

    merci!!!

    Grazie dall’Italia.

    Perfect script!

    Reply to this 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

    Reply to this message

  • Excellent !

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

    Merci !

    Reply to this message

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

    Reply to this 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) ;-)

    Reply to this message

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

    Vaut mieux recourir au tab-browsing ;-)

    Reply to this message

Ajouter un commentaire

Who are you?
[Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom