[Résolu] Fonction "Add to Favorites"

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
lordbdp
Gecko
Messages : 87
Inscription : 22 sept. 2005, 19:51

[Résolu] Fonction "Add to Favorites"

Message par lordbdp »

Bonjour à tous et à toutes.

Actuellement j'utilise ce script pour ajouter aux Favoris, mais il ne marche pas sous Firefox. Comment faire ?

Code : Tout sélectionner

<script language="JavaScript">
var txt = "Cette page en favoris !"
var url = this.location;
var who = document.title;
var ver = navigator.appName
var num = parseInt(navigator.appVersion)
if ((ver == "Microsoft Internet Explorer")&&(num >= 4)) {
   document.write('<A HREF="javascript:window.external.AddFavorite(url,who);" class="downlinks" ');
   document.write('onMouseOver=" window.status=')
   document.write("txt; return true ")
   document.write('"onMouseOut=" window.status=')
   document.write("' '; return true ")
   document.write('">'+ txt + '</a>')
}else{
   txt += "  (Ctrl+D)"
   document.write(txt)
} 
                  </script>
Message envoyé avec : Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
Dernière modification par lordbdp le 19 oct. 2006, 10:59, modifié 1 fois.
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Message par calimo »

Déjà, ne jamais détecter un navigateur par son nom : toujours par ses capacités

Au lieu de

Code : Tout sélectionner

if ((ver == "Microsoft Internet Explorer")&&(num >= 4))
tu mets

Code : Tout sélectionner

if(window.external.AddFavorite)
en plus c'est plus court :wink:

Ensuite, il n'y a pas de script pour ajouter aux marque-pages, donc il faut faire Ctrl+D :wink:
lordbdp
Gecko
Messages : 87
Inscription : 22 sept. 2005, 19:51

Message par lordbdp »

Merci Calimo pour la correction. Mais sommes-nous toujours obligé de proposer une Ctrl+D ? N'y a-t-il pas de solution pour proposer une mise en favoris sans combinaison clavier ni autres bidouilles ?
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Message par calimo »

lordbdp a écrit :Mais sommes-nous toujours obligé de proposer une Ctrl+D ?
Oui.
lordbdp a écrit :N'y a-t-il pas de solution pour proposer une mise en favoris sans combinaison clavier ni autres bidouilles ?
Non-

Pas de mirâcles aujourd'hui :wink:
lordbdp
Gecko
Messages : 87
Inscription : 22 sept. 2005, 19:51

Message par lordbdp »

Zut ! Moi qui croyais en Boudha... Mdr.

Merci quand-même pour l'info. :wink:
lordbdp
Gecko
Messages : 87
Inscription : 22 sept. 2005, 19:51

Message par lordbdp »

J'ai fait un test avec ton code et le texte ne s'affiche plus...
Je suis obligé de laisser le code comme avant ta modification sinon y'a plus rien de visible à son emplacement.
SB
Varan
Messages : 1095
Inscription : 05 mars 2004, 18:38

Message par SB »

Essaie

Code : Tout sélectionner

if (document.all && !window.opera) {
Ça devrait fonctionner avec FF, IE, Opera mais il faudrait tester avec d'autres navigateurs.
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Message par calimo »

Hum... de nouveau on teste des capacités qui n'ont rien à voir avec la fonction voulue, donc on s'expose à certains risques, et à ce niveau alors autant garder la détection de navigateur.

Effectivement ça ne fonctionne pas, mais je ne sais pas pourquoi. Peut-être que le problème vient de la syntaxe ? Il manque plein de ";" dans ton code, je ne sais pas comment ça pouvait marcher avant :roll:
martin
Varan
Messages : 1074
Inscription : 21 janv. 2004, 16:23

Message par martin »

Je suis d'accord avec Calimo.
essaie :

Code : Tout sélectionner

<script language="JavaScript">
var txt = "Cette page en favoris !";
var url = this.location;
var who = document.title;
if (window.external) {
   document.write('<A HREF="javascript:window.external.AddFavorite(url,who);" class="downlinks" ');
   document.write('onMouseOver=" window.status=');
   document.write("txt; return true ");
   document.write('"onMouseOut=" window.status=');
   document.write("' '; return true ");
   document.write('">'+ txt + '</a>');
}else{
   txt += "  (Ctrl+D)";
   document.write(txt);
}
</script>
Le test doit être suffisant. Je ne sais pas pourquoi on ne peut pas tester la méthode, et j'ai pas envie de chercher.

pour les ";", c'est autorisé par javascript, le retour à la ligne termine l'instruction, mais je trouve plus propre avec.
lordbdp
Gecko
Messages : 87
Inscription : 22 sept. 2005, 19:51

Message par lordbdp »

Bon, j'utilise le code de Martin car ç'est nickel avec.


Quelles différences entre :

Code : Tout sélectionner

if ((ver == "Microsoft Internet Explorer")&&(num >= 4))

Code : Tout sélectionner

if (document.all && !window.opera)

Code : Tout sélectionner

if (window.external)

Vu que j'y connais rien en programmation... :lol:
martin
Varan
Messages : 1074
Inscription : 21 janv. 2004, 16:23

Message par martin »

1 : tu testes le nom du navigateur, tu vérifies que ce nom est "Microsoft Internet Explorer", et que sa version est supérieure à 4.

2 : tu testes que le navigateur connait l'objet "document.all" (inventé par MS, donc pas forcément connus d'autres navigateurs), et qu'il ne connait pas l'objet "window.opera" (visiblement propriétaire Opera, et donc sûrement pas connus de IE, mais par moi non plus).

3 : tu testes l'existence de l'objet "window.external" dont tu vas te servir d'une méthode.


Le plus facile à gérer et le plus cohérent, c'est de tester si un objet ou une méthode (une "fonction" si tu veux) existe avant de s'en servir, plutôt que d'essayer de trouver le navigateur actuel et sa version par d'autres moyens, pour trouver si il peut utiliser cette fonction, car tu as vite fait de rallonger les tests à n'en plus finir, et les versions peuvent changer, et tu ne prévois pas forcément tous les navigateurs existants.
epsy
Varan
Messages : 1024
Inscription : 21 déc. 2005, 19:58

Message par epsy »

salut,
SB a écrit :Essaie

Code : Tout sélectionner

if (document.all && !window.opera) {
Ça devrait fonctionner avec FF, IE, Opera mais il faudrait tester avec d'autres navigateurs.
seulement mozilla compte intégrer document.all :shock: :roll:
҈ - config- http://fr.enlightenment.org - wikipedia mon amiiii! - JID: epsy arobase :) jaim.at
martin
Varan
Messages : 1074
Inscription : 21 janv. 2004, 16:23

Message par martin »

epsy a écrit : seulement mozilla compte intégrer document.all :shock: :roll:
C'est déjà le cas dans firefox 1.5, mais en mode quirk (je crois, pas sûr), et ils ont prévu que ce genre de test (if (document.all)) renvoie false.
des détails
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Message par calimo »

martin a écrit :(if (document.all)) renvoie false.
Et désactive complètement document.all dans la page !
Benoit
Administrateur
Messages : 4894
Inscription : 19 juil. 2003, 10:59

Message par Benoit »

lordbdp a écrit :Mais sommes-nous toujours obligé de proposer une Ctrl+D ? N'y a-t-il pas de solution pour proposer une mise en favoris sans combinaison clavier ni autres bidouilles ?
Heureusement qu'il n'y en a pas, sinon les sites ne se priveraient pas pour remplir ta liste de "favoris" à ta place et sans te demander ton avis :)
♫ Li tens s'en veit, je n'ai riens fais ;
Li tens revient, je ne fais riens. ♪
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 2 invités