J'ai une application Web qui est personnalisée en fonction de l'utilisateur actuellement connecté. J'aimerais changer le favicon de la page pour qu'il devienne le logo de la marque de distributeur, mais je ne trouve aucun code ni aucun exemple de comment pour faire ça. Quelqu'un a-t-il déjà réussi cela?
J'imagine avoir une douzaine d'icônes dans un dossier, et la référence au fichier favicon.ico à utiliser est juste générée dynamiquement avec la page HTML. Pensées?
javascript
html
dom
favicon
SqlRyan
la source
la source
Réponses:
Pourquoi pas?
Firefox devrait être cool avec ça.
modifié pour remplacer correctement les icônes existantes
la source
shortcut
de l'rel
attribut.shortcut
est une relation de lien propriétaire IE invalide!Voici du code qui fonctionne dans Firefox, Opera et Chrome (contrairement à toutes les autres réponses publiées ici). Voici une autre démonstration de code qui fonctionne également dans IE11 . L'exemple suivant peut ne pas fonctionner dans Safari ou Internet Explorer.
Vous l'utiliseriez alors comme suit:
Sortez ou regardez une démo .
la source
document.head || document.head = document.getElementsByTagName('head')[0];
Uncaught ReferenceError: Invalid left-hand side in assignment
Si vous disposez de l'extrait HTML suivant:
Vous pouvez changer le favicon en utilisant Javascript en changeant l'élément HREF sur ce lien, par exemple (en supposant que vous utilisez JQuery):
Vous pouvez également créer un élément Canvas et définir le HREF comme ToDataURL () du canvas, un peu comme le fait Favicon Defender .
la source
favicon.png
. Cela pourrait devoir être fait côté serveur.href
attribut d'#favicon
utilisationdocument.getElementById('favicon').setAttribute('href','favicon2.png')
Peut-être pouvez-vous l'ajouter à votre message @fserb?Version jQuery:
ou encore mieux:
Version Vanilla JS:
la source
Une approche plus moderne:
Vous pouvez ensuite l'utiliser comme ceci:
la source
Le favicon est déclaré dans la balise head avec quelque chose comme:
Vous devriez pouvoir simplement passer le nom de l'icône que vous souhaitez dans les données de vue et le jeter dans la balise head.
la source
Voici du code que j'utilise pour ajouter le support de favicon dynamique à Opera, Firefox et Chrome. Je n'ai pas réussi à faire fonctionner IE ou Safari. Fondamentalement, Chrome autorise les favicons dynamiques, mais il ne les met à jour que lorsque l'emplacement de la page (ou un
iframe
etc.) change pour autant que je sache:Pour changer de favicons,
favicon.change("ICON URL")
utilisez simplement ce qui précède.(crédits à http://softwareas.com/dynamic-favicons pour le code sur lequel je me suis basé.)
la source
J'utiliserais l'approche de Greg et ferais un gestionnaire personnalisé pour favicon.ico Voici un gestionnaire (simplifié) qui fonctionne:
Vous pouvez ensuite utiliser ce gestionnaire dans la section httpHandlers de la configuration Web dans IIS6 ou utiliser la fonctionnalité «Mappages de gestionnaires» dans IIS7.
la source
La seule façon de faire fonctionner cela pour IE est de paramétrer votre serveur Web pour traiter les demandes pour que * .ico appelle votre langage de script côté serveur (PHP, .NET, etc.). Configurez également * .ico pour rediriger vers un seul script et que ce script fournisse le fichier favicon correct. Je suis sûr qu'il y aura toujours des problèmes intéressants avec le cache si vous voulez pouvoir rebondir dans le même navigateur entre différents favicons.
la source
Il existe une solution sur une seule ligne pour ceux qui utilisent jQuery:
la source
Ou si vous voulez une émoticône :)
Accessoires à https://koddsson.com/posts/emoji-favicon/
la source
Selon WikiPedia , vous pouvez spécifier le fichier favicon à charger en utilisant la
link
balise dans lahead
section, avec un paramètre derel="icon"
.Par exemple:
J'imagine que si vous vouliez écrire du contenu dynamique pour cet appel, vous auriez accès à des cookies afin que vous puissiez récupérer vos informations de session de cette façon et présenter un contenu approprié.
Vous risquez de tomber dans des formats de fichiers (IE ne prend en charge que son format .ICO, tandis que la plupart des autres prennent en charge les images PNG et GIF) et peut-être des problèmes de mise en cache, à la fois sur le navigateur et via des proxys. Cela serait dû à l'original intention de favicon, spécifiquement, pour marquer un signet avec le mini-logo d'un site.
la source
Oui totalement possible
par exemple
Quel que soit le langage / framework côté serveur que vous utilisez, vous pouvez facilement trouver le fichier en fonction de l'ID utilisateur et le servir en réponse à cette demande .
Mais pour faire des favicons correctement (c'est en fait un sujet vraiment complexe ), veuillez voir la réponse ici https://stackoverflow.com/a/45301651/661584
Beaucoup plus facile que de travailler vous-même sur tous les détails.
Prendre plaisir.
la source
<link>
, mais recherchent plutôt laapple-touch-icon
ou une autre variante de ce type.J'utilise favico.js dans mes projets.
Il permet de changer le favicon en une gamme de formes prédéfinies et également personnalisées.
En interne, il utilise
canvas
pour le rendu etbase64
l'URL des données pour le codage des icônes.La bibliothèque a également de belles fonctionnalités: badges d'icônes et animations; soi-disant, vous pouvez même diffuser la vidéo de la webcam dans l'icône :)
la source
J'utilise cette fonctionnalité tout le temps lors du développement de sites ... afin que je puisse voir en un coup d'œil quel onglet contient local, dev ou prod.
Maintenant que Chrome prend en charge les favicons SVG, il est beaucoup plus facile.
Tampermonkey Script
Jetez un coup d'œil à https://gist.github.com/elliz/bb7661d8ed1535c93d03afcd0609360f pour un script tampermonkey qui pointe vers un site de démonstration que j'ai jeté sur https://elliz.github.io/svg-favicon/
Code de base
Adapté ceci d'une autre réponse ... pourrait être amélioré mais assez bon pour mes besoins.
Insérez simplement votre propre SVG (peut-être nettoyé avec le SVGOMG de Jake Archibald si vous utilisez un outil) dans la const en haut. Assurez-vous qu'il est carré (en utilisant l'attribut viewBox) et vous êtes prêt à partir.
la source