يمكنك قراءة المزيد عن هذا هنا.
Swift Selection Search (SSS) هو إضافة Firefox للبحث بسرعة عن بعض النصوص في صفحة باستخدام محركات البحث المفضلة لديك.
حدد نصًا على صفحة وسيظهر مربع منبثقة صغيرة مع محركات البحث فوق المؤشر. اضغط على واحدة وستبحث تلقائيًا عن النص المحدد باستخدام هذا المحرك!
SSS قابلة للتكوين. يمكنك تحديد محركات البحث التي تظهر على المنبثقة ، ومظهر الرموز ، وماذا يحدث عند النقر فوقها ، حيث يظهر المنبثقة ، وما إذا كنت ستخفيه عند التمرير أو لا تريد أن ترغب في نسخ النص التلقائي عند التحديد ، والعديد من الخيارات الأخرى.
يمكنك أيضًا الحصول على قائمة سياق اختياري للبحث مع أي من محركاتك. يمكنك تعطيل هذه القائمة الإضافية في الخيارات إذا كنت تريد. لديك أيضًا خيار تعطيل المنبثقة نفسها وترك قائمة السياق هذه فقط. اختيارك. سائدا
يتوفر SSS في موقع Mozilla إضافات ، هنا:
https://addons.mozilla.org/firefox/addon/swift-selection-search
أولاً ، نظرًا لأن WebExtensions مصنوعة في JavaScript ، نحتاج إلى أن نكون قادرين على تحويل TypeScript إلى JavaScript ، ويفضل أن يكون ذلك تلقائيًا قدر الإمكان.
تثبيت NPM . قم بتنزيل node.js من https://nodejs.org وستحصل على NPM بجانبها.
في مجلد المشروع ، قم بتشغيل هذا في سطر الأوامر:
تثبيت NPM
سيؤدي ذلك إلى تثبيت تبعيات TypeScript للمشروع محليًا في Node_Modules Node_Modules .
لنقل كل البرامج النصية.
"node_modules/.bin/tsc.cmd" -مشاهدة -P tsconfig.json
سيبقى الأمر على قيد الحياة ويعيد إعادة النقل تلقائيًا بعد أي تغييرات على ملفات .TS ، وهو أمر مفيد أثناء التطوير.
الآن لديك ملفات .js ، حتى تتمكن من استخدام SSS كمواقع WebExtension. ياي!
للتطور القصير أو مجرد الفضول ، فإن الطريقة الأكثر بساطة لتجربة SSS هي حول: تصحيح التصحيح#addons في Firefox. اضغط على زر "تحميل الإضافات المؤقتة" ، حدد ملفًا في دليل SWIFT Selection Search "SRC" (على سبيل المثال Meantest.json ) ، وسيقوم بتحميل الوظيفة الإضافية حتى يتم إغلاق المتصفح. تتطلب التغييرات على معظم التعليمات البرمجية إعادة تحميل الوظيفة الإضافية مرة أخرى.
للحصول على مزيد من التطوير المطول و/أو التغليف ، مثل إعادة التحميل التلقائي بعد كل تغيير ، يرجى اتباع تعليمات Mozilla هنا لتثبيت الأداة ويب ويب .
مفترق المستودع على github واستنساخه على جهاز الكمبيوتر الخاص بك.
اتبع التعليمات أعلاه لكيفية البناء .
في النهاية ، يجب أن يكون لديك برنامج نصي ينقل الكود تلقائيًا من TypeScript إلى JavaScript ، ويجب أن يعرف كيفية تشغيل إصدار SSS على Firefox.
تعلم أن SSS لديها 3 فروع رئيسية:
اقرأ إرشادات الرمز أدناه.
ابحث عن مشكلة تود حلها في قائمة المشكلات.
اسأل عما إذا كان أي شخص يعمل عليه بالفعل. بالإضافة إلى ذلك ، إذا كان الأمر مفقودًا تفاصيل حول كيفية التنفيذ أو إذا كنت تريد معرفة الأساليب المحتملة ، فلا تتردد في السؤال!
قم بإنشاء فرع GIT جديد للميزة الجديدة أو إصلاح الأخطاء التي تحاول تنفيذها. قم بإنشاء هذا الفرع من "تطوير" ، لتبسيط الدمج لاحقًا (نظرًا لأن "Master" قد لا يكون له كل التغييرات الحالية).
تنفيذ وارتكاب/دفع التغييرات إلى الفرع ، ربما في ارتباطات متعددة.
أخيرًا ، قم بإنشاء طلب سحب لدمج التغييرات الخاصة بك على المستودع الأصلي. سيخضع لمراجعة التعليمات البرمجية والمناقشة وربما التغييرات إذا لزم الأمر.
شكرًا!
تم نقل SSS في مرحلة ما من JavaScript إلى TypeScript للحصول على فوائد التعليقات التوضيحية النوع ، حيث يمكن اكتشاف العديد من الأخطاء بواسطة Checker Type. ومع ذلك ، تجدر الإشارة إلى أن تفاعل Webextensions مع TypeScript أمر صعب في أحسن الأحوال ، لأن TypeScript يفترض أن البرامج النصية يمكنها استيراد الكود/البيانات من البرامج النصية الأخرى ، في حين أن بيئة WebExtensions لديها في الواقع صناديق الرمل ونادراً ما تسمح بذلك.
لا ترى برامج النصوص المحتوى رمزًا من البرنامج النصي للخلفية ، أو العكس ، والطريقة الوحيدة التي يمكن أن ترى بها برامج النصوص المتعددة للمحتوى هي رمز بعضها البعض إذا تم حقنها جميعًا على نفس الصفحة بواسطة البرنامج النصي للخلفية ، على غرار كيفية تضمينها في صفحة HTML مثل البرامج النصية. ليس لدى TypeScript أي فكرة أن هذه هي الطريقة التي تعمل بها WebExtensions ، لذلك لمجرد أن شيئًا ما ينقل إلى JavaScript بشكل صحيح ، فهذا لا يعني أن Webextension ستعمل.
مثال على ذلك هو أنه يمكننا إعلان الأنواع/الفئات في البرنامج النصي للخلفية والرجوع إليها في البرامج النصية الأخرى ، حيث إن مدقق النوع يهتم بها. نحصل على فحص النوع وهو جيد.
ومع ذلك ، إذا حاولنا الإضافة إلى هذه الفئات ، فلن ترى بعض الطرق المتغيرة ، وما إلى ذلك ، ثم البرامج النصية للمحتوى أو خيارات البرامج النصية لصفحات الخيارات. عند الانتقال إلى JavaScript ، سيتم تركها كمرجع إلى الكود في برنامج نصي آخر ، والذي لا يمكن الرجوع إليه في وقت التشغيل بسبب Webextensions Sandboxing. وينطبق هذا أيضًا على التعدادات (التي لها قيم ملموسة ، لذلك "بيانات") ما لم نعلن عنها كـ const enum ، في هذه الحالة ، يقوم TypeScript بنسخ قيمها إلى حيث يتم استخدامها بدلاً من إنشاء كائنات JavaScript.
لذلك ، إذا رأيت فئة معلنة بالكامل أو جزئيًا في أكثر من برنامج نصي واحد في هذا المشروع (على سبيل المثال في كل من البرنامج النصي للخلفية ونصي الصفحة) ، فإن ما سبق هو السبب.
شيء آخر قد يفشل هو استخدام instanceof للتحقق مما إذا كان كائن من فئة معينة. لا تفعل ذلك لفئات تم إنشاؤها المخصصة لأنه قد يفشل بسبب صندوق الرمل.