jQuery: try catch { appel de la fonction } ne fonctionne pas?
Je vais avoir beaucoup de JavaScript sur ma page et je suis en utilisant typekit. Afin de rendre ma page fonctionne correctement (grille et des trucs), je suis en utilisant la nouvelle événements de polices typekit.
C'est tout simplement un try et catch déclaration qui vérifie si les polices chargées ou non. Cependant, quelque part, je ne suis pas à l'obtenir. Je vais appeler la setGrid()
fonction si les polices typekit sont chargés, mais par exemple, l'iPad ou l'iPhone ne supporte pas encore et donc ma page ne s'affiche lorsque je n'appelez pas la setGrid()
fonction.
De toute façon, je veux appeler la fonction de l'erreur de déclaration, ainsi, si la page est appelée sur l'iPhone, la page fonctionne sans webfonts.
try {
Typekit.load({
loading: function() { },
active: function() { setGrid(); },
inactive: function() { }
})
} catch(e) {
alert('error'); //works
setGrid(); //doesn't get called
}
Cependant, la alert
œuvres, la setGrid()
fonction n'est pas appelée.
Des idées?
edit: la fonction ressemble à ça:
var setGrid = function () {
$('#header, #footer').fadeIn(500);
return $("#grid").vgrid({
easeing: "easeOutQuint",
time: 800,
delay: 60
});
};
setGrid()
n'est pas appelé? Peut-être que la fonction est trop lancer une exception? (Aussi, vous avez oublié un point-virgule après la alert()
, qui n'affectent pas l'exécution. Mais c'est le style pauvres.)Cela ne va pas résoudre votre problème, mais: Omission des points-virgules est considéré comme une mauvaise pratique, car il peut casser beaucoup de choses. Vous devez toujours mettre en.
Essayez d'alerte(setGrid); au lieu de alert('erreur') - que voyez-vous maintenant?
undefined? le setGrid fonction est deux lignes en dessous.
voir ma réponse alors, qui devrait résoudre votre problème.
OriginalL'auteur matt | 2010-11-20
Vous devez vous connecter pour publier un commentaire.
Essayez de rendre "réel" de la fonction, comme ceci:
OriginalL'auteur Shadow Wizard
La fonction est appelée, mais ça ne fonctionne pas comme vous l'espériez vous amenant à penser qu'il n'est pas appelé. Vous pouvez voir qu'il est appelé par l'ajout d'une alerte à la première ligne de setGrid.
jsfiddle lien
setGrid()
après.non, je ne suis pas confus par l'alerte, j'ai mis l'alerte juste pour montrer que le alert() est appelée, mais ma fonction ne fonctionne pas. j'ai édité mon post!
OriginalL'auteur Mark Byers
Pouvez-vous:
setGrid
, tropalert
après setGrid pour en confirmer l'obtenir par le biais desetGrid
OriginalL'auteur icyrock.com