لا يتم عرض Discourse على gecko قبل الإصدار 74

التعديل 08883cbdd1c39a0c15b97af44ddaefe14acdc21a كسر عرض discourse في إصدارات gecko الأقدم. لا يدعم Gecko عامل السلسلة الاختياري قبل الإصدار 74.

راجع https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining#browser_compatibility لمزيد من المعلومات.

إعجابَين (2)

أوه، هل من المفترض أن نقوم بتحويل هذا الكود، @pmusaraj / @eviltrout / @j.jaffeux؟

3 إعجابات

قد أكون مخطئًا في هذا، لكن التخمين الأولي هو أننا لا نحدد قائمة المتصفحات، وبالتالي يستخدم المتصفح قائمة افتراضية (على الأرجح @babel/preset-env · Babel)، ولا يعتبر هذا الإصدار مدعومًا لدينا، ونتيجة لذلك لا يتم تحويله.

وهو أمر غريب بعض الشيء، فإصدار فايرفوكس 74 عمره سنة واحدة فقط، لكن نعم، عند النظر حاليًا إلى قائمة المتصفحات:

$ npx browserslist
...
firefox 89
firefox 88
firefox 78
...

الآن، السؤال هو: @sam هل نريد دعم هذا الإصدار؟ على الرغم من أنه عمره سنة واحدة فقط، فإن إصدار فايرفوكس الحالي هو 89، مما يعني أن هذا الإصدار متأخر 15 إصدارًا. لست متأكدًا من ذلك، الأمر يعود لك. من المهم مراعاة أن دعم هذا الإصدار سيضيف وزنًا إلى حمولة الجميع، لأن عملية التحويل تعمل تقريبًا مثل polyfill (إضافة بعض الوظائف لدعم هذا الإصدار واستبدال بناء الجملة باستدعاءات الوظائف).

إعجابَين (2)

(في النسخة المستقرة، هذا هو UX: Add auto focus to hamburger and user menu dropdowns (#13165) · discourse/discourse@45dca79 · GitHub)

من باب الفضول، أسلوب الكود القديم يعمل بشكل جيد، لماذا لا نلتزم به حتى الآن؟ :thinking: FIX: We can't use `?.` yet (#13168) · discourse/discourse@96fd202 · GitHub

إعجابَين (2)

هناك العديد من الأسباب، ولكن في الغالب يجعل كل شيء أسهل للمطورين؛ فلا نضطر إلى التفكير كثيرًا في كل ما يمكننا استخدامه أو لا، ولدينا أساس حديث إلى حد ما.

4 إعجابات

أنا منفتح على إسقاط الدعم بشرط أن يكون لدينا بديل HTML جاهز.

ما لا يمكننا فعله بالتأكيد هو عرض صفحة ثابتة تعمل على IE9 وصفحة معطلة على Firefox عمره سنة واحدة.

أفضل فقط تجميع الكود (transpile) ليشمل Firefox/Chrome بمتوسط عمر 2-3 سنوات، لكنني سعيد بتفويض القرار لـ @eviltrout ولكم. يمكننا أن نكون أكثر عدوانية، لكننا لا نستطيع عرض صفحات معطلة.

تعديل: انظر إلى الارتباط الخلفي، قد تكون هذه مشكلة خطيرة جدًا على أندرويد الذي يميل إلى أن يكون له وتيرة تحديث متصفحات رديئة.

5 إعجابات

لا يمكنني الموافقة أكثر من ذلك، وأنا قلق بالفعل من أن توافق المتصفحات قد تعرض لبعض الضربات مؤخرًا.

أيضًا على iOS، كان هناك هذا: Safari (iOS) shows blank pages on Discourse instances after beta 8 due to manually disable IntersectionObserver

إعجاب واحد (1)

نعم، متفق، على الأقل يجب أن نطبق دعم قائمة المتصفحات حتى لا تظهر أشياء غير مدعومة كمفاجأة لنا

3 إعجابات

هل يمكن أن يحدّ هذه المشكلة من فهرسة جوجل؟

فقط لأتأكد مما إذا كان عليّ البحث في مكان آخر عن سبب هذا الحظر في الفهرسة.

شكرًا لك

لم أتمكن من إعادة إنتاج المشكلة الأصلية في الميتا. جربت ذلك عبر Browserstack باستخدام Firefox 73 على نظام macOS و Firefox 68 على نظام Windows. @vige، هل يمكنك إعادة إنتاج المشكلة في الميتا؟

4 إعجابات

أعتقد أنك على حق، يجب أن يعمل الأمر فعليًا. لقد راجعت الكود في المتصفح:

    toggleHamburger: function toggleHamburger() {
      this.state.hamburgerVisible = !this.state.hamburgerVisible;
      this.toggleBodyScrolling(this.state.hamburgerVisible); // التركيز التلقائي على أول رابط في القائمة المنسدلة

      (0, _runloop.schedule)("afterRender", function () {
        var _document$querySelect2;

        (_document$querySelect2 = document.querySelector(".hamburger-panel .menu-links a")) === null || _document$querySelect2 === void 0 ? void 0 : _document$querySelect2.focus();
      });
    },

لاحظ أنه يجب علينا ما زال محاولة معرفة ما الذي يتم تحويله أو لا، حتى لو لم يكن ذلك هو المشكلة هنا.

4 إعجابات

حسناً، صحّحني إذا كنت مخطئاً @pmusaraj، لكنني أعتقد أنه بما أننا لا نحدد preset-env، وبالتالي لا نحدد الأهداف، فإن كل الإضافات التي ندرجها تُستخدم. ونتيجة لذلك، يتم تطبيق proposal-optional-chaining بالتأكيد.

أعتقد أنني مرتاح لهذا، ربما نحتاج فقط إلى مراجعة كل إضافة سنوياً وإعادة النظر فيما إذا كانت لا تزال ضرورية؟

إعجابَين (2)

وجدتها. فقط stable معطلة. لم يتم تطبيق proposal-optional-chaining هناك.

في tests-passed، يتضمن تغيير ?. تغيير proposal-optional-chaining: DEV: Enable optional chaining in all contexts (#13180) · discourse/discourse@855e854 · GitHub

أما في stable، فقد تم إجراء تغيير الكود مع ?. فقط، لكن لم يتم تعديل خيارات المترجم (transpiler): UX: Add auto focus to hamburger and user menu dropdowns (#13165) · discourse/discourse@45dca79 · GitHub

3 إعجابات

نعم، انتباه ممتاز:

  • أضفنا بعض الكود باستخدام السلسلة الاختيارية (optional chaining)
  • قمنا بإعادته إلى حالته السابقة
  • أضفناه مرة أخرى مع إضافة حزمة babel الصحيحة

ومع ذلك، قبل 5 أيام قمنا بنقل الالتزام الأصلي فقط إلى الإصدار المستقر، دون إضافة الحزمة:

@pmusaraj أعتقد أن نقل إضافة الحزمة إلى الإصدار المستقر آمن أيضًا، أليس كذلك؟

8 إعجابات

نعم، موافق، يجب أن نقوم بالنقل الخلفي. سأعمل على ذلك لاحقًا اليوم.

10 إعجابات

تم إصلاح هذا الآن في النسخة المستقرة (v2.7.4)، حيث تم تمكين إضافة proposal-optional-chaining الخاصة بـ babel هناك، وقد حلّت المشكلة.

شكرًا @RGJ @j.jaffeux (و@vige على التقرير الأصلي)!

12 إعجابًا

أه، هذا يفسر كل شيء! الكود موجود في النسخة المستقرة، لكن المحول البرمجي ليس كذلك. شكراً لك على عملك التحقيقي.

7 إعجابات

شكرًا جزيلاً لجميع المطورين المشاركين على إصلاح هذا بسرعة!

للتوضيح، وفقًا لاختباراتي، كان هذا الخطأ يؤثر أيضًا، في بعض الحالات، على أحدث إصدار من Microsoft Edge لنظام Android (والذي، حسب علمي، لا يعمل بـ Gecko).

6 إعجابات

هل يمكنك التكرم بإضافة وسم v2.7.4 الفعلي إلى هذا الإصدار؟
لقد قضيت نصف ساعة أحاول git checkout v2.7.4، فظهر أن الوسم غير موجود :sweat_smile:

3 إعجابات

نعتذر عن ذلك. تم وضع علامة عليه الآن tagged.

7 إعجابات