Javascript jQuery:try catch{call function}不起作用?
我的页面上有很多JavaScript,我使用的是typekit。为了使我的页面正常工作(网格和其他东西),我使用了新的typekit字体事件 它只是一个try-and-catch语句,用于检查字体是否加载。但不知怎的,我不明白。如果加载了typekit字体,我将调用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
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()会起作用!