Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery:try catch{call function}不起作用?_Javascript_Jquery_Try Catch_Typekit - Fatal编程技术网

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

Javascript jQuery:try catch{call function}不起作用?,javascript,jquery,try-catch,typekit,Javascript,Jquery,Try Catch,Typekit,我的页面上有很多JavaScript,我使用的是typekit。为了使我的页面正常工作(网格和其他东西),我使用了新的typekit字体事件 它只是一个try-and-catch语句,用于检查字体是否加载。但不知怎的,我不明白。如果加载了typekit字体,我将调用setGrid()函数,但例如iPad或iPhone还不支持该功能,因此当我不调用setGrid()函数时,我的页面无法正确显示 无论如何,我也想在错误语句中调用该函数,因此如果在iPhone上调用该页面,该页面也可以在没有webfo

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

它只是一个try-and-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
}
但是,
警报
起作用,不会调用
setGrid()
函数。 有什么想法吗

编辑:该函数如下所示:

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

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

您能:

  • 也可以尝试/捕捉周围的设置网格
    setGrid
  • setGrid之后发出警报
    以确认它正在通过
    setGrid
尝试将其设置为“真实”功能,如下所示:

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

您有什么证据表明未调用
setGrid()
?也许该函数太过抛出异常了?(另外,您在
警报()
之后忘记了分号,这不会影响执行。但这是一种糟糕的风格。)这不会解决您的问题,但是:省略分号被认为是一种不好的做法,因为它会破坏很多东西。你应该总是把它们放进去;而不是警报('error')-您现在看到了什么?未定义?setGrid函数在下面两行。@user239831请看我的答案,应该可以解决您的问题。是的。他可能会被这样一个事实弄糊涂,即在警报关闭之前,执行会在警报处停止。然后它继续运行,之后运行
setGrid()
。不,我没有被警报搞糊涂,我设置警报只是为了显示警报()被调用,但我的函数不起作用。我编辑了我的帖子!setGrid()之后的警报不会被调用!如果我在setGrid()调用之前设置它,则alert()会起作用!