مشكلة منشئ التاريخ في IE: NaN مقابل الوظائف في المتصفحات الأخرى
ضمن مشروع يتضمن تطوير تقويم JavaScript، ظهرت اختلافات في التعامل مع التاريخ بين Internet Explorer (IE) والمتصفحات مثل Firefox وChrome. على وجه التحديد، كانت وظائف التاريخ في IE تؤدي إلى قيم NaN (ليس رقمًا)، بينما كانت تعمل بشكل صحيح في المتصفحات الأخرى.
بعد التحقيق، أصبح من الواضح أن السبب الجذري كان مرتبطًا بتنسيق التاريخ المستخدم. تهدف الوظيفة المعنية، buildWeek()، إلى إنشاء تواريخ رأسية لأسبوع تقويمي استنادًا إلى تاريخ الاثنين المقدم بالتنسيق 'm، d، Y'، على سبيل المثال، "02، 01، 2010". ومع ذلك، في IE، لم يتم التعرف على هذا التنسيق بشكل صحيح، مما أدى إلى مشكلة NaN.
لحل هذا التناقض، تم اعتماد نهج مختلف. بدلاً من الاعتماد على التنسيق المحدد، تم تقسيم سلسلة التاريخ إلى مكوناتها (التاريخ والوقت) باستخدام Split(" "). بعد ذلك، تم تقسيم مكون التاريخ إلى الأجزاء المكونة له (السنة والشهر واليوم) باستخدام Split("-")، وتم تقسيم مكون الوقت إلى أجزائه (الساعات والدقائق والثواني) باستخدام Split(":") .
تم بعد ذلك إنشاء مثيل للتاريخ باستخدام هذه القيم التي تم تحليلها. أثبتت هذه الطريقة أنها متوافقة مع جميع المتصفحات، مما يضمن معالجة متسقة للتاريخ عبر IE وFirefox وChrome.
var dateStr = "2011-08-03 09:15:11"; //returned from mysql timestamp/datetime field var a = dateStr.split(" "); var d = a[0].split("-"); var t = a[1].split(":"); var date = new Date(d[0], (d[1] - 1), d[2], t[0], t[1], t[2]);
باعتماد هذا هذا النهج، تم التخلص من أخطاء NaN في IE بنجاح، مما أدى إلى معالجة متسقة للتاريخ عبر متصفحات مختلفة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3