11548 sujets

JavaScript, DOM et API Web HTML5

Salut
Je me suis permis de modifier la fonction
function open_ext_link()
{
	var liens = document.getElementsByTagName('a');
	// On récupère tous les liens (<a>) du document dans une variable (un array), ici liens.
	// Une boucle qui parcourt le tableau (array) liens du début à la fin.
	for (var i = 0 ; i < liens.length ; ++i)  {
		// Si les liens ont un nom de class égal à lien_ext, alors on agit.
		if (liens[ i].className == 'lien_ext')  {
			liens[ i].title = 'S\'ouvre dans une nouvelle fenêtre';
			// Au clique de la souris.
			liens[ i].onclick = function()  {
				window.open(this.href);
				return false; // On ouvre une nouvelle page ayant pour URL le href du lien cliqué et on inhibe le lien réel.
			};
		}
	}
}
window.onload = open_ext_link;
// Au chargement de la page, on appelle la fonction.


en
function open_ext_link()
{

	var domaine='http://www.votredomaine.com';
	var liens = document.getElementsByTagName('a');
	// On récupère tous les liens (<a>) du document dans une variable (un array), ici liens.
	// Une boucle qui parcourt le tableau (array) liens du début à la fin.
	for (var i = 0 ; i < liens.length ; ++i)  {
		// Si les liens sont du même domaine, alors on agit.
		if (liens[ i].href.substr(0,domaine.length) != domaine){
			liens[ i].title = 'S\'ouvre dans une nouvelle fenêtre';
			// Au clique de la souris.
			liens[ i].onclick = function()  {
				window.open(this.href);
				return false; // On ouvre une nouvelle page ayant pour URL le href du lien cliqué et on inhibe le lien réel.
			};
		}
	}
}
window.onload = open_ext_link;
// Au chargement de la page, on appelle la fonction.

Ce qui fait qu'on n'a même plus besoin de renseigner la class sur tous les liens.
Il y a juste à renseigner votre domaine dans la variable domaine
Pratique pour les forums...
Smiley biggrin
Modifié par Olivier (20 May 2005 - 15:16)
Salut,

Tres ingenieux.
Je me permets juste une remarque.

Il serait interessant de tester uniquement le domaine et non le sous domaine+domaine (www+domaine.tld).

Pourquoi ?
Parce qu'il est possible pour un meme site, d'utiliser differents sous domaines.

Par exemple alsacreations.com utilise:
- css.alsacreations.com
- forum.alsacreations.com
- blog.alsacreations.com
...

Mon commentaire reste du chipotage mais ta modification est tres interessante.

Bravo Smiley clapclap

FRed
En fait les modifs sont déjà dans les cartons Smiley smile

Tout ça est déjà fait de mon côté et sera bientôt "tutorielé" Smiley cligne
ah... je viens de corriger un truc sur mes sites....
Dans ta prochaine version, rajoute aussi un test pour savoir si le lien ne commence pas par javascript, sinon ça bug... Smiley cligne
<a href="javascript:fonction1();">lien</a>
jeromax a écrit :
ah... je viens de corriger un truc sur mes sites....
Dans ta prochaine version, rajoute aussi un test pour savoir si le lien ne commence pas par javascript, sinon ça bug... Smiley cligne
<a href="javascript:fonction1();">lien</a>


T'inquiete pas Smiley cligne ça serait tout propre et efficace Smiley langue
Merci quand même de l'indiquer, c'est vrai qu'on pense pas forcément à ce type de lien, d'autant que c'est pas trop recommandé Smiley cligne