jQuery:try catch {call function}不起作用?

时间:2010-11-20 20:49:28

标签: javascript jquery try-catch typekit

我的页面上有很多JavaScript,而且我正在使用typekit。为了使我的页面正常工作(网格和东西)我正在使用新的typekit字体事件。

它只是一个try和catch语句,用于检查字体是否加载。但不知怎的,我没有得到它。如果加载了typekit字体,我正在调用setGrid()函数,例如iPad或iPhone尚不支持,因此当我不调用setGrid()功能时,我的页面无法正常显示。

无论如何,我也想在错误声明中调用该函数,因此如果在iPhone上调用该页面,该页面也可以不使用webfonts。

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

但是,alert有效,setGrid()函数不会被调用。 有什么想法吗?

编辑:该功能如下:

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

3 个答案:

答案 0 :(得分:3)

尝试将其设为“真实”功能,如下所示:

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

答案 1 :(得分:2)

该函数确实被调用,但它不会像您预期的那样工作,导致您认为它没有被调用。您可以通过添加警报作为setGrid的第一行来查看它是否被调用。

jsfiddle link

答案 2 :(得分:1)

你可以:

  • 尝试/捕捉setGrid
  • 在setGrid之后
  • alert确认它正在通过setGrid