webleads-tracker

WIKI : Lien externe ?

frederic robert
Est-il possible avec WIKI de paramètrer l'ouverture d'un lien dans une nouvelle fenetre ?

[Texte du lien|www.url.com|fr]

Pascal Derathé
Sauf erreur de ma part cela n'est pas possible actuellement. J'en avais déjà fait la demande et il m'avait été répondu que l'ouverture d'un lien dans une nouvelle ne serait pas conforme aux standard XHTML 1.1 strict.

La seule solution dispo actuellement est de créer une ressource "lien" et de cocher la case "ouvrir dans une nouvelle "fenêtre". Un peu lourd mais ça le fait.
Artisan du web à Saint-Genis Laval (près de Lyon)

frederic robert
C'est malheureusement la réponse que j'attendais ...
J'espérais la petite astuce de derrière les fagots mais bon ...
Quoi qu'il en soit merci pour ta réponse Pascal.

Jérémie [Medialibs]
Bonjour,

Il existe aussi une méthode qui permet d'ouvrir tous les liens externe dans une nouvelle fenêtre.
Il suffit d'exécuter un javascript lors du chargement de la page. Ce javascript devra lister tout les liens de la page. Vous avez peut être remarqué qu'une classe CSS est ajouté automatiquement sur tout les liens e-majine. Cette classe permet de savoir si le lien pointe vers une site externe, vers un fichier ou en interne.
Il faut donc ajouter une action window.open sur tout les liens externes.

Avantages :
  • Pas de problème de validité XHTML
  • pas besoin d'ajouter une action sur les liens

Directeur du Labo R&D
Medialibs

Pascal Derathé
effectivement on a bien une classe "LinkOut"

a class="LinkOut" hreflang="fr" href="http://www.google.fr">Lien vers Google


Et ce javascript .. il est dispo où ?
Artisan du web à Saint-Genis Laval (près de Lyon)

Jérémie [Medialibs]
Bah dans ma tête !!!

function open_ext_link()
{
	// On récupère tous les liens de la page
	var links = document.getElementsByTagName('a');
	// On boucle sur les liens
	for (var i = 0 ; i < links.length ; ++i)  {
		// On teste si la classe est LinkOut
		if (links[i].className == 'LinkOut')  {
			// Une action de type onclick est ajoutée au lien
			links[i].onclick = function()  {
				window.open(this.href);
				return false;
			};
		}
	}
}


Ensuite, il suffit d'ajouter entre les balises head le mainPage.html le code suivant :

<script type="text/javascript">
<!-- 
function init(){
  open_ext_link();
}
window.onload=init;
if (window.attachEvent) window.attachEvent("onload", init);
// --> 
</script>


Il est possible de se passer de la fonction init, mais si vous devez par la suite rajouter d'autres actions au chargement de la page, il sera plus simple de les ajouter dans cette fonction.
Par exemple :

<script type="text/javascript">
<!-- 
function init(){
  open_ext_link();
  ma_future_fonction();
}
window.onload=init;
if (window.attachEvent) window.attachEvent("onload", init);
// --> 
</script>
Directeur du Labo R&D
Medialibs

Julien Guerry
on peut changer en plus violent, tout lien avec un domaine différent du domaine du document actuel déclenche un window.open().

Julien Guerry
Soit la condition suivante dans le scripts de Jérem :
if (links.href.indexOf('http://', 0) == 0 && links.href.indexOf(location.hostname, 7) == -1) || links.className.indexOf('LinkFile') != -1

Pascal Derathé
Et bien messieurs voilà qui sonne bon. Merci à vous deux.

Dès que j'ai 2 mn ("imposteur .... ça va te prendre au moins 1/2 heure ! " :) ) j'essaye.
Artisan du web à Saint-Genis Laval (près de Lyon)