سؤال

لدي الكثير من 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.

رابط JSFIDDLE

هل تستطيع:

  • حاول/تجول setGrid, ، جدا
  • alert بعد SetGrid لتأكيد أنها تمر setGrid
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top