Utilisation de jQuery pour savoir quand @font-face polices sont chargés?
Je suis de l'utilisation de @font-face et je déteste que Firefox affiche la valeur par défaut de la police, attend de charger le @font-face de la police, le remplace alors. Ainsi, l'ensemble de la page clignote avec la nouvelle police.
Les navigateurs Webkit il suffit de ne pas afficher le texte jusqu'à ce que la police est chargée et c'est beaucoup plus propre look.
Donc, je me demandais si jQuery pourrait m'aider à savoir quand toutes les données sur le chargement de la page, y compris le @font-face de fichier, de sorte que je peux montrer mon texte? Est-il une méthode jQuery qui me dit que quand tout est chargé?
- J'ai failli posté une réponse, mais il est tellement nul que je pense que je vais attendre et voir si une personne intelligente sait une bonne façon de le faire.
- Haha, c'est très bien.
- Pour la petite histoire, ma réponse a été abandonnée une suggestion de regarder la taille de certains éléments de test (éventuellement cachés) avec une minuterie et d'attendre de voir lors de ses changements de taille. Qui est, vous commencez à le retardateur avant que vous essayez de charger la police de caractère(s), puis lorsque la minuterie de routine (l'exécution de toutes les 50ms ou presque) voit que la taille de certaines box a changé, il sait que les polices de caractères doivent être arrivés.
- Oooh, oooh, oh -- vous pouvez charger les fichiers de police avec les objets de l'Image, et lorsque le onload incendies de vous peut appuyer sur un bouton qui permet à l'CSS et révèle également le style des éléments.
- ... à l'exception de "charge" peut ne pas se déclencher si la réponse n'est pas une image ...
- Trouvé ma solution ci-dessous.
- Si quelqu'un finit toujours par ici, Option1 à partir de ce lien fonctionne bien pour moi! portalzine.de/dev/...
Vous devez vous connecter pour publier un commentaire.
J'utilise cette fonction - testé sur Safari, Chrome, Firefox, Opera, IE7, IE8, IE9:
L'utiliser comme:
setInterval()
pour chaque police. Préfère avoir un seulsetInterval()
qui vérifie toutes les polices qui ont encore besoin de vérifier.fontFamily
pour les pas-encore-chargé-police, elle démarre à l'aide d'une méthode héritée de la police (la durée, en raison de toute règle CSS) donc il dit qu'il a changé, de sorte qu'il exécute la fonction de rappel avant le web de police est chargé. Je viens d'envoyer un correctif.if(interval) { clearInterval(interval);}
après++loadedFonts;
résout le problème.Ok, c'était assez facile. Fondamentalement, j'ai juste mis mon texte:
puis ajouter:
Alors assurez-vous que les éléments suivants sont également dans mon fichier css:
$(document).ready(function() { });
fonctionne toujours pour moi dans tous les navigateurs.Vous devriez pas utiliser
$(window).bind('load')
- qui va attendre la fin de la page à charger (ce qui est peut-être ce que vous voulez), et pas seulement la police. Si vous voulez contrôler le processus de chargement de @font-faces utilisation WebFont Chargeur, développé par Google et Typekit.Vous pouvez l'utiliser avec Google font API, typekit et votre propre webfont fournisseur - vous (bien que je n'ai jamais essayé moi-même que je suis un Typekit de l'Utilisateur.
Lire à ce sujet ici: http://code.google.com/apis/webfonts/docs/webfont_loader.html et ici: http://blog.typekit.com/2010/05/19/typekit-and-google/
- Je utiliser les polices web de google (Crète Ronde Ouverte et Régulière Sans Régulière avec Gras)
Vous pouvez utiliser ceci :
ou ceci :
Noter que dans la première option, j'ai utilisé jQuery Différée Objet.
Peut-être..
Créer un z-index: -10 div et de le remplir avec beaucoup de texte (avec un niveau "normal" de la police). Au document.prêt() ou un autre événement:
J'ai eu le même problème. Et de toute façon je ne peux pas obtenir de Google webfont chargeur de travailler avec la police ttf (surtout chinois polices) ou d'envoyer un jquery réponse lorsque la police est chargée.
Donc, je suis venu avec cette solution de base, utile lors de la modification de la police de manière dynamique une fois que la page est chargée. il montre que lorsque la police est correctement chargé.
J'ai d'abord créer un mannequin div et le remplir avec les "abcd" et puis de lui donner une taille 40, enregistrer la largeur de la div. Lorsque le " changer la police de caractère de l'événement est appelé par l'intermédiaire d'un bouton ou quoi que ce soit, il doit suivre le mannequin div largeur des changements. La largeur des changements représentent que la police a changer.
CODE HTML
JQuery
J'ai eu le même problème et je suis en train d'essayer avec le readyfunction(), bind() de la fonction et de quelques autres que j'ai trouvés, mais aucun d'entre eux fonctionne. Finalement j'ai trouvé une solution, il suffit de aplying un délai avant que l'animation est chargé... comme ceci:
Je sais que ce n'est pas la meilleure solution, si quelqu'un peut me dire de mieux??
Merci!