Ajout aux favoris multi-navigateur

Soyez le premier à donner votre avis sur cette source.

Snippet vu 13 553 fois - Téléchargée 28 fois

Contenu du snippet

Le principe est d'ajouter le site aux favoris automatiquement, à partir d'une simple fonction, selon le navigateur.

L'idéal est d'utiliser au minimum les "navigator.userAgent.indexOf('BrowserId')" et autres pour connaître le butineur utilisé, et ainsi éviter les erreurs d'identification posé par le remplacement des cette chaîne 'BrowserId' par le navigateur.

Le retour de la fonction est l'un de ces événements :
- Navigateur reconnu, automatisation de l'enregistrement par le navigateur.
- Navigateur reconnu mais rien n'est prévu par le navigateur, afficher le raccourci possible par une boite de dialogue.
- Navigateur inconnu, afficher un message d'erreur par une boite de dialogue.
- Ou imprévu ; réponse TRUE à l'un des tests, mais incapacité d'exploitation (le cas de Konqueror) et rien ne se produit.

Je n'ai pas testé sous Mac, et j'espères ne pas m'êttre trompé dans le raccourci ; le comportement de Safari, Camino etc... m'est inconnu.
Il y a un problème avec Konqueror, il répond TRUE un peu partout, mais rien ne peut être utilisé ; j'ai placé provisoirement (enfin je le souhaite) un indexOf pour le reconnaître.

Les tests de reconnaissance ne sont pas de moi, ils existaient déjà sur le web. Je propose juste un regroupement (peut être) pratique.
Bien entendu il est toujours possible de passer le nom et url du site en paramètre de la fonction ;)

Source / Exemple :


function fav () {

	siteURL = "http://www.monsite.ext/"
	siteNOM = "LeSite"
	
	/*-- MESSAGE --*/
	function myMessage (raccourciClavier) {
		alert ("Utilisez '" + raccourciClavier + "'\npour ajouter " + siteNOM + " dans vos favoris !");
	}
	

	/*-- TRAITEMENT DES NAVIGATEURS --*/

	//Konqueror
	if (navigator.userAgent.indexOf('Konqueror') >= 0) {
	/*Test a effectuer avant tout les autres car repond TRUE aux differents tests sans pouvoir les exploiter*/
		myMessage("CTRL + B");
	}
	
	else if (window.external) {
		/* Internet Explorer 4+, et ses dérivés (Crazy Browser, Avent Browser ...) */
		window.external.AddFavorite(siteURL,siteNOM);
	}

	else if (document.all && (navigator.userAgent.indexOf('Win') < 0)) {
		/* Internet Explorer Mac */
		myMessage("POMME + D");
	}
	
	else if (window.opera && window.print) {
		/* Opera 6+ */
		myMessage("CTRL + T");
	}
	
	else if (window.sidebar) {
		/* Netscape 6+ ; Mozilla, FireFox et compagnie (K-Meleon ...) */
		window.sidebar.addPanel(siteNOM,siteURL,"");
	}
	
	else if (document.layers) {
		/* Netsccape 4 */
		myMessage("CTRL + D");
	}
	
	else alert ("Cette fonction n'est pas disponible pour votre navigateur.");
}

A voir également

Ajouter un commentaire

Commentaires

jfperras
Messages postés
70
Date d'inscription
vendredi 13 septembre 2002
Statut
Membre
Dernière intervention
6 mai 2009
-
meme chose que Zart... pas assez polyvalent
Joss7fr
Messages postés
4
Date d'inscription
mercredi 8 octobre 2003
Statut
Membre
Dernière intervention
17 août 2005
-
1)
En fait mon idée est de placer la fonction dans un lien, et je n'aime pas vraiment qu'il ne se passe rien quand je clique sur un lien.
Donc à défault j'indique les racourcis clavier que l'utilisateur ne connais pas forcement ; et j'ai pour habitude de croire que s'il y a assimilation des raccourcis claviers on les utilise plutot que les liens du type "ajouter ce site à vos favoris".
On peut supposer que c'est un rappel utile. Et par la suite le visiteur poura effectuer ce-dit raccourcis, plutôt que d'aller promener sa souris dans les menus.
(Si tu veux ajouter une boite de dialogue, si tu aimes les boites de dialogues, disant "Aller dans menu ...", c'est possible aussi ;) ).

2)
Une liste exhaustive non, bien entendu.
Mais une liste qui regroupe les navigateurs courants oui, et qui les reconnait ça me va.
Je prefere ça au "window.external.AddFavorite(siteURL,siteNOM)" exclusivité IE (il me semble bien) que l'on retrouve trops frequemment.
Le souhait est que si "window.external==TRUE" alors "window.external.AddFavorite(siteURL,siteNOM)" soit utilisable, mais on le voit avec Konqueror ce n'est pas le cas. Si c'était le cas ce serait l'idéal, ce n'est pas l'identification du navigateur qui est privilégiée mais de savoir si telle action est faisable ; d'où on perdrait le besoin de liste exaustive (du moins elle le deviendrait automatiquement).
Le nouveau navigateur sera alors dans la catégorie non reconnue.
Et tout ne sera pas toujours réinventé, certaines fonctions se retrouverons surement.
Mais il est simple de rajouter une ligne pour lui, et qui sais cette ligne servira pour d'autres navigateurs (voir la suite ...). Et le retouche de se code ne doit pas vraiment poser de problème ... du moins pour le moment.
J'avais testé le script sous Netscape 4.7 à 8, Opera 2 à 8, IE 3(inutile n'a pas de JS) à 6, les Mozillas (meme pheonix), et Konqueror. Et aucun problème à signaler. Je ferais surrement d'autres tests sur les moins utilisés, mais c'est une plage de navigateurs qui me convient, les principaux sont là.

3)
Ce n'est pas le navigateur qui doit en fait être detecté, mais les possibilités de son implementation javascript. Mozilla (firefox etc...) repond à "window.sidebar" et execute "window.sidebar.addPanel(siteNOM,siteURL,"")", c'est une erreure de ma part de ne pas l'avoir indiqué. Mais Netscape et Mozilla (firefox, etc ...) sont liés dans leur construction.
Pour CrazyBrowser je n'ai pas testé pour lui, je l'ai oublié. Mais il me semblait que c'est basé sur IE, j'irrais voir ça. C'est comme les sur-couches de IE, elles reponderont au premier test.

Enfin, si des choses vous semble inutiles, l'adaptation est toujours autorisée :D
cs_darkman2
Messages postés
121
Date d'inscription
mardi 3 mai 2005
Statut
Membre
Dernière intervention
31 décembre 2005
-
meme remarque que Zart
Joss7fr
Messages postés
4
Date d'inscription
mercredi 8 octobre 2003
Statut
Membre
Dernière intervention
17 août 2005
-
Hé hé :D, allé je rajoute une remarque de plus sur ce code.

Mon problème est que j'en ai assai de voire des window.external.addFovirite pour une majorité des liens du type "Ajouter à vos favoris", alors qu'il existe au moins un equivalent pour les autres navigateurs, entre autre pour la famille Mozilla.
Comme ce script est simple et court, il est donc parfaitement modifiable aux besoins. C'est pour ça que je me suis permis de rajouter les raccourcis claviers, qui personnellement m'intéressaient, sans que ceci brouille la compréhension du script ; à vous de les supprimer.
Si l'agencement du code ne vous convient pas, à vous de l'adapter, ça simplicité le permet.
Si on ne veux garder que les ajouts automatiques pour les navigateurs on peut toujours garder seulement ceux là :


if (window.external) {
/* Internet Explorer 4+, et ses dérivés (Crazy Browser, Avent Browser ...) */
window.external.AddFavorite(siteURL,siteNOM);
}
else if (window.sidebar) {
/*Netscape 6+ ; Mozilla, FireFox et compagnie (K-Meleon ...) */
window.sidebar.addPanel(siteNOM,siteURL,"");
}


Ou alors même :

if (window.external) {
/* Internet Explorer 4+, et ses dérivés (Crazy Browser, Avent Browser ...) */
print ("Ajouter à vos Favoris");
}
else if (window.sidebar) {
/*Netscape 6+ ; Mozilla, FireFox et compagnie (K-Meleon ...) */
print ("Ajouter à vos Favoris");
window.sidebar.addPanel(siteNOM,siteURL,"");
}


Je ne propose pas un ajout UNIVERSEL, mais MULTI, où c'est vrai il faudrait plutôt dire BI-FAMILLE. Et je ne pense pas me tromper de trop en disant que le marcher des navigateurs est partagé entre la famille IE et celle de Mozilla principalement, donc le script concerne sûrement une bonne partie des utilisateurs. Et à ma connaissance l'ajout automatique n'est disponible que pour ceux-là.
Le test dans les fonctions permet de prendre en compte plus de butineurs concernés que le fameux indexOf ; il évite de rajouter du code pour reconnaitre un navigateur en ajoutant une partie de son identifiant dans les tests, ou alors de confondre un navigateur qui a changé cette chaine.
Donc pour la polyvalence c'est le mieux que je puisse proposer (ça n'exclus pas qui ne l'ai peut etre pas).

Et en completant ce script par du superflus, on peut voir quelles sont les fonctions pour reconnaitre certains navigateurs, surtout Opera pour ma part.

(Pour le troisement point je suppose que c'est annulé, j'ai testé et approuvé pour les navigateurs cités en commentaire ; j'avoue que les '...' suppose que c'est la même chose pour les autres)
freenat94
Messages postés
2
Date d'inscription
vendredi 23 septembre 2005
Statut
Membre
Dernière intervention
10 janvier 2006
-
Moi je dis BRAVO ! Si vous saviez le nombre de script incomplet, erroné que l'on trouve ca fait plaisirde voir un script simple et clair. meme si c'est pour une fonction courante comme celle ci. Ce script et un autre me permette de ne pas importuner l'utilisateur avec une boite de dialogue "voulez vous ajouter blablablabla...".

Alors merci...
Commenter la réponse de cs_Zart

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.