لماذا يفتح Math.Round نافذة طباعة من مستعرض في Try .NET

تم لفت انتباه الجمهور اليوم إلى خطأ غير منطقي مضحك تم اكتشافه في Try .NET ، وهي أداة مصممة لتضمين أمثلة تفاعلية في الوثائق C #. يمكنك رؤية القضية المفتوحة على جيثب على الرابط .

يفتح الرمز المحدد عند التنفيذ (عند استدعاء الأسلوب Math.Round ) بدلاً من النتيجة المتوقعة فجأة نافذة طباعة من المستعرض:

using System; public class Example { public static void Main() { var x = Math.Round(11.1, MidpointRounding.AwayFromZero); } } 


صورة

باستخدام تتبع الأخطاء ونقاط التوقف ، وجد المستخدمون سببًا مزعومًا لهذا السلوك - تم إخفاؤه في مكتبة mono.js.

صورة

الجواب بسيط. على ما يبدو ، أراد شخص ما استخدام دالة print () الخاصة به في JS (أو ارتبكها مع console.log ) ، ولكن نظرًا لعدم وجود أي نطاق ، فإن البرنامج يستدعي window.print () ، والذي يجب أن يفتح نافذة الطباعة الحالية المستند - لأن النافذة هي كائن عالمي للتيار الرئيسي في المستعرض.

لم يتم ملاحظة هذا الاسترداد على الفور ، لكن يدعي أحد المستخدمين أن هذا الخطأ قد تم إصلاحه في نوفمبر الماضي .

لتجنب المواقف التي تحدث فيها أخطاء من هذا النوع ، يحتفظ مشروع إنشاء تطبيق تفاعلي بقائمة من المتغيرات العامة للمستعرض "مربكة" ، لأنه من السهل جدًا ارتكاب خطأ مشابه:

 handleClick() { //   `event` this.setState({ text: event.target.value //    `event`- ! }); } 

Source: https://habr.com/ru/post/ar456880/


All Articles