jQuery: حاول catch {call function} ألا تعمل؟
-
26-09-2019 - |
سؤال
لدي الكثير من JavaScript على صفحتي وأنا أستخدم Typekit. من أجل جعل صفحتي تعمل بشكل صحيح (الشبكة والأشياء) ، أستخدم أحداث خط Typekit الجديدة.
إنها ببساطة محاولة لالتقاط بيان تتحقق مما إذا كانت الخطوط يتم تحميلها أم لا. لكن بطريقة ما لم أحصل عليها. أنا أتصل بـ setGrid()
وظيفة إذا تم تحميل خطوط TypeKit ، ولكن على سبيل المثال ، لا يدعم 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
});
};
المحلول
حاول جعلها وظيفة "حقيقية" ، مثل هذا:
function setGrid() {
$('#header, #footer').fadeIn(500);
return $("#grid").vgrid({
easeing: "easeOutQuint",
time: 800,
delay: 60
});
};
نصائح أخرى
يتم استدعاء الوظيفة ، لكنها لا تعمل فقط كما كنت تتوقع أن تسبب لك الاعتقاد بأنه لا يتم استدعاؤه. يمكنك أن ترى أنه يتم استدعاؤه عن طريق إضافة تنبيه كخط أول من setGrid.
هل تستطيع:
- حاول/تجول
setGrid
, ، جدا alert
بعد SetGrid لتأكيد أنها تمرsetGrid