代码之家  ›  专栏  ›  技术社区  ›  matt

jquery:try catch调用函数不起作用?

  •  3
  • matt  · 技术社区  · 14 年前

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

    它只是一个尝试捕获语句,用于检查字体是否被加载。但不知怎么的,我还是不明白。我打电话给 setGrid() 如果已加载了typekit字体,但例如ipad或iphone尚不支持该功能,因此当我不调用 设置网格() 功能。

    无论如何,我也要调用错误语句中的函数,所以如果在iPhone上调用该页,那么该页也可以不使用WebFonts工作。

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

    但是, alert 工作, 设置网格() 无法调用函数。 有什么想法吗?

    编辑:函数如下:

    var setGrid = function () {
     $('#header, #footer').fadeIn(500);
     return $("#grid").vgrid({
      easeing: "easeOutQuint",
      time: 800,
      delay: 60
     });
    };
    
    3 回复  |  直到 14 年前
        1
  •  3
  •   Shadow Wizard    14 年前

    尝试使其成为“真实”函数,如下所示:

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

    函数确实会被调用,但它并不像您预期的那样工作,导致您认为它不会被调用。您可以看到,通过添加一个警报作为setgrid的第一行来调用它。

    jsfiddle link

        3
  •  1
  •   icyrock.com    14 年前

    你能:

    • 尝试/抓住 setGrid 也是
    • alert 在setgrid确认它通过后 设置网格
    推荐文章