jQuery: попробуйте catch {call function} не работает? - PullRequest
3 голосов
/ 20 ноября 2010

У меня на странице много JavaScript, и я использую typekit. Для того, чтобы моя страница работала правильно (сетка и прочее), я использую новые события шрифта typekit.

Это просто оператор try и catch, который проверяет, загружены шрифты или нет. Однако почему-то я не понимаю. Я вызываю функцию setGrid(), если загружены шрифты typekit, но, например, iPad или iPhone пока не поддерживают это, и поэтому моя страница не отображается должным образом, когда я не вызываю функцию setGrid().

В любом случае, я хочу также вызвать функцию в сообщении об ошибке, поэтому, если страница вызывается на iPhone, она также работает без веб-шрифтов.

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

Однако, alert работает, функция setGrid() не вызывается. Есть идеи?

edit: функция выглядит так:

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

Ответы [ 3 ]

3 голосов
/ 21 ноября 2010

Попробуйте сделать это "настоящей" функцией, например:

function setGrid() {
  $('#header, #footer').fadeIn(500);
  return $("#grid").vgrid({
    easeing: "easeOutQuint",
    time: 800,
    delay: 60
  });
};
2 голосов
/ 20 ноября 2010

Функция вызывается, но она не работает так, как вы ожидали, что заставляет вас думать, что она не вызывается.Вы можете увидеть, что он вызывается, добавив предупреждение в качестве первой строки setGrid.

jsfiddle link

1 голос
/ 20 ноября 2010

Можете ли вы:

  • попробуй / поймай около setGrid тоже
  • alert после setGrid, чтобы подтвердить, что он проходит setGrid
...