2010-11-20 6 views
3

J'ai beaucoup de JavaScript sur ma page et j'utilise typekit. Pour que ma page fonctionne correctement (grille et autres), j'utilise les nouveaux événements de polices typkit.jQuery: try catch {call function} ne fonctionne pas?

C'est simplement une instruction try et catch qui vérifie si les polices sont chargées ou non. Cependant, je ne comprends pas. J'appelle la fonction setGrid() si les polices de kit de type sont chargées, mais par exemple. iPad ou iPhone ne le supporte pas encore et donc ma page ne s'affiche pas correctement lorsque je n'appelle pas la fonction setGrid().

Quoi qu'il en soit, je veux également appeler la fonction dans l'instruction d'erreur, donc si la page est appelée sur l'iPhone, la page fonctionne sans les polices Web.

try { 
Typekit.load({ 
    loading: function() { }, 
    active: function() { setGrid(); }, 
    inactive: function() { } 
}) 
} catch(e) { 
alert('error'); //works 
setGrid(); //doesn't get called 
} 

Cependant, les travaux alert, la fonction ne setGrid() pas appelée. Des idées?

modifier: la fonction ressemble que:

var setGrid = function() { 
$('#header, #footer').fadeIn(500); 
return $("#grid").vgrid({ 
    easeing: "easeOutQuint", 
    time: 800, 
    delay: 60 
}); 
}; 
+0

Quelle preuve avez-vous que 'setGrid()' n'est pas appelé? Peut-être que cette fonction est trop jeter une exception? (De plus, vous avez oublié un point-virgule après 'alert()', ce qui n'affectera pas l'exécution, mais c'est de mauvais style.) – cdhowie

+1

Cela ne résoudra pas votre problème, mais: omettre les points-virgules est considéré comme une mauvaise pratique. casser beaucoup de choses. Vous devriez toujours les mettre. – jwueller

+0

Essayez d'avoir une alerte (setGrid); au lieu d'alerte ('erreur') - que voyez-vous maintenant? –

Répondre

3

Essayez de le faire fonctionner "vrai" , comme ceci:

function setGrid() { 
    $('#header, #footer').fadeIn(500); 
    return $("#grid").vgrid({ 
    easeing: "easeOutQuint", 
    time: 800, 
    delay: 60 
    }); 
}; 
2

La fonction ne s'appelle, mais ça ne fonctionne pas comme prévu, vous obligeant à penser que ce n'est pas appelé. Vous pouvez voir qu'il est appelé en ajoutant une alerte en tant que première ligne de setGrid.

jsfiddle link

+0

Oui. Peut-être est-il troublé par le fait que l'exécution s'arrête à l'alerte jusqu'à ce que l'alerte soit fermée. _Then_ continue, en exécutant 'setGrid()' après. –

+0

non je ne suis pas confus par l'alerte, j'ai mis l'alerte juste pour montrer que l'alerte() est appelée mais ma fonction ne fonctionne pas. j'ai édité mon post! – matt

1

Pouvez-vous:

  • try/catch autour setGrid aussi
  • alert après setGrid pour le confirmer devient par setGrid
+0

bien l'alerte après le setGrid() ne se fait pas appeler! si je l'ai mis avant l'appel de setGrid() l'alerte() fonctionne! – matt