الأسئلة الشائعة

إذا لم تعثر على إجابة عن سؤالك هنا، جرِّب الأسئلة الشائعة حول "سوق Chrome الإلكتروني" أو علامة [google-chrome-extension] في Stack Overflow أو مجموعة chromium-extensions أو مساعدة المتجر.

أسئلة عامة

ما هي إضافات Google Chrome؟

إضافات Google Chrome هي تطبيقات تعمل داخل متصفّح Chrome وتوفّر وظائف إضافية وتكامل مع مواقع إلكترونية أو خدمات تابعة لجهات خارجية وتجربة تصفّح مخصّصة.

كيف يمكنني إعداد Chrome لتطوير الإضافات؟

طالما أنك تستخدم إصدارًا من Chrome يتوافق مع الإضافات، فلديك كل ما تحتاجه لبدء كتابة إضافة خاصة بك. يمكنك البدء بتفعيل وضع "مطوّر البرامج".

انقر على رمز قائمة Chrome واختَر الإضافات من قائمة الأدوات. تأكّد من وضع علامة في مربّع الاختيار "وضع مطوّر البرامج" في أعلى يسار الصفحة. يمكنك الآن إعادة تحميل الإضافات، وتحميل دليل ملفات غير مضغوطة كما لو كانت إضافة حزمة، والمزيد. للحصول على برنامج تعليمي كامل، يُرجى الاطّلاع على البدء.

ما هي التقنيات المستخدمة لكتابة إضافات Chrome؟

تتم كتابة الإضافات باستخدام تقنيات الويب القياسية نفسها التي يستخدمها مطوّرو المواقع لإنشاء مواقع إلكترونية. يتم استخدام HTML كلغة ترميزية للمحتوى، بينما يتم استخدام CSS للنمط وJavaScript للنصوص البرمجية. نظرًا لأن Chrome يدعم HTML5 وCSS3، يمكن للمطورين استخدام أحدث تقنيات الويب المفتوحة مثل صور اللوحة والرسوم المتحركة في CSS في إضافاتهم. يمكن للإضافات أيضًا الوصول إلى العديد من واجهات برمجة تطبيقات JavaScript التي تساعد في تنفيذ وظائف مثل ترميز JSON والتفاعل مع المتصفّح.

هل يتم جلب الإضافات من الويب في كل مرة يتم فيها تحميل المتصفح؟

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

كيف يمكنني تحديد إصدار Chrome الذي يتم النشر إليها في أي قناة؟

لتحديد إصدار Chrome المتاح حاليًا على كل نظام من الأنظمة الأساسية المختلفة، انتقِل إلى omahaproxy.appspot.com. وعلى هذا الموقع الإلكتروني، ستظهر لك البيانات بتنسيق مشابه لما يلي:

cf,dev,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
cf,beta,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
cf,stable,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
linux,dev,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
linux,beta,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
linux,stable,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
mac,dev,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
mac,beta,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
mac,stable,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
win,canary,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
win,dev,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
win,beta,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
win,stable,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
cros,dev,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
cros,beta,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####

ويمثّل كل سطر معلومات عن منصّة مختلفة ومجموعة قنوات مختلفة. والأنظمة الأساسية المدرَجة هي cf (إطار Google Chrome) وlinux وmac وwin وcros (نظام التشغيل Google ChromeOS). القنوات المدرَجة هي canary وdev وbeta وstable. ويمثل الرقمان المكونان من أربعة أجزاء بعد القناة الإصدارات الحالية والسابقة من Chrome التي تم نشرها في مجموعة قناة النظام الأساسي هذه. بقية المعلومات عبارة عن بيانات وصفية حول تاريخ طرح الإصدارات لأول مرة، بالإضافة إلى أرقام المراجعات المرتبطة بكل إصدار.

الإمكانات

هل يمكن للإضافات إنشاء طلبات Ajax عبر النطاقات؟

نعم. يمكن للإضافات إنشاء طلبات من خلال النطاقات. راجع هذه الصفحة للاطّلاع على مزيد من المعلومات.

هل يمكن للإضافات استخدام خدمات ويب تابعة لجهات خارجية؟

نعم. الإضافات قادرة على إجراء طلبات Ajax عبر النطاقات، حتى تتمكن من استدعاء واجهات برمجة التطبيقات البعيدة مباشرةً. تتميز واجهات برمجة التطبيقات التي توفر البيانات بتنسيق JSON بالسهولة في الاستخدام.

هل يمكن للإضافات ترميز/فك ترميز بيانات JSON؟

نعم، لأنّ الإصدار V8 (محرك JavaScript في Chrome) يتوافق مع JSON.stringify وJSON.parse بشكل مضمّن، يمكنك استخدام هذه الدوالّ في الإضافات كما هو موضّح هنا بدون تضمين أيّ مكتبات JSON إضافية في الرمز.

هل يمكن للإضافات تخزين البيانات محليًا؟

نعم، يمكن للإضافات استخدام localStorage لتخزين بيانات السلسلة بشكل دائم. باستخدام وظائف JSON المدمجة في Chrome، يمكنك تخزين بُنى بيانات معقدة في LocalStorage. بالنسبة إلى الإضافات التي تحتاج إلى تنفيذ طلبات بحث SQL على البيانات المخزّنة، يستخدم Chrome قواعد بيانات SQL من جهة العميل، والتي يمكن استخدامها أيضًا.

هل يمكن للإضافات استخدام بروتوكول OAuth؟

نعم، هناك إضافات تستخدم OAuth للوصول إلى واجهات برمجة التطبيقات للبيانات عن بُعد. يرى معظم المطوّرين أنّه من السهل استخدام مكتبة OAuth بلغة JavaScript لتبسيط عملية توقيع طلبات OAuth.

هل يمكن للإضافات إنشاء واجهة مستخدم خارج صفحة الويب المعروضة؟

نعم، قد تضيف الإضافة أزرارًا إلى واجهة مستخدم متصفّح Chrome. يمكنك الاطّلاع على إجراءات المتصفّح وإجراءات الصفحة للحصول على مزيد من المعلومات.

كما يمكن للإضافة أيضًا إنشاء إشعارات منبثقة، تكون موجودة خارج نافذة المتصفح. راجع مستندات إشعارات سطح المكتب للحصول على مزيد من التفاصيل.

هل بإمكان الإضافات رصد النقرات على علامات التبويب وأزرار التنقّل في Chrome؟

لا، تقتصر الإضافات على الاستماع إلى الأحداث الموضّحة في مستندات واجهة برمجة التطبيقات.

هل يمكن لإضافتين التواصل مع بعضهما البعض؟

نعم، يمكن للإضافات تمرير الرسائل إلى إضافات أخرى. راجع مستندات تمرير الرسائل للحصول على مزيد من المعلومات.

هل يمكن للإضافات استخدام "إحصاءات Google"؟

نعم، بما أنه يتم إنشاء الإضافات مثل المواقع الإلكترونية، يمكنها استخدام إحصاءات Google لتتبّع الاستخدام. ومع ذلك، يجب تعديل رمز التتبّع لسحب نسخة HTTPS من مكتبة "إحصاءات Google". يمكنك الاطّلاع على هذا البرنامج التعليمي للحصول على مزيد من المعلومات حول كيفية إجراء ذلك.

هل يمكن للإضافات تعديل عناوين URL التي تبدأ بـ chrome:// ؟

لا، فقد تم تصميم واجهات برمجة التطبيقات للإضافات لتقليل مشاكل التوافق مع الأنظمة القديمة التي قد تنشأ عند الدفع بإصدارات جديدة من المتصفح. إنّ السماح بالنصوص البرمجية للمحتوى على عناوين URL التي تستخدم chrome:// يعني أنّ المطوّرين سيبدأون في الاعتماد على عناصر DOM وCSS وJavaScript لهذه الصفحات للبقاء على حالها. وفي أفضل الأحوال، لا يمكن تعديل هذه الصفحات بالسرعة الحالية التي يتم تعديلها الآن. وفي أسوأ الحالات، قد يعني ذلك أن تحديث إحدى هذه الصفحات قد يتسبّب في تعطُّل الإضافة، ما يتسبّب في توقُّف أجزاء رئيسية من المتصفِّح عن العمل لدى مستخدمي تلك الإضافة.

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

هل يمكن للإضافات فتح نوافذ منبثقة لإجراءات المتصفح/الصفحة بدون تفاعل المستخدم؟

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

هل يمكن للإضافات إبقاء النوافذ المنبثقة مفتوحة بعد أن ينقر المستخدم بعيدًا عنها؟

لا، يتم إغلاق النوافذ المنبثقة تلقائيًا عندما يركّز المستخدم على جزء من المتصفّح خارج النافذة المنبثقة. ولا توجد طريقة لإبقاء النافذة المنبثقة مفتوحة بعد أن ينقر المستخدم عليها.

هل يمكن إعلام الإضافات عند تثبيتها أو إلغاء تثبيتها؟

يمكنك الاستماع إلى حدث runtime.onInstalled ليتم إشعارك عند تثبيت الإضافة أو تحديثها، أو عند تحديث Chrome نفسه. وليس هناك حدث مقابل عند إلغاء تثبيت الإضافة.

تطوير

كيف يمكنني إنشاء واجهة مستخدم للإضافة؟

تستخدم الإضافات HTML وCSS لتحديد واجهات المستخدم الخاصة بها، وبالتالي يمكنك استخدام عناصر تحكّم النموذج العادي لإنشاء واجهة المستخدم أو تصميم الواجهة باستخدام CSS كما تفعل مع صفحة الويب. بالإضافة إلى ذلك، يمكن للإضافات إضافة بعض عناصر واجهة المستخدم المحدودة إلى Chrome نفسه.

ما مقدار البيانات التي يمكنني تخزينها في localStorage؟

يمكن للإضافات تخزين ما يصل إلى 5 ميغابايت من البيانات في localStorage.

كيف أنشئ قائمة خيارات لتطبيقي؟

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

ما هي أدوات تصحيح الأخطاء المتاحة لمطوّري الإضافات؟

يمكن استخدام أدوات المطوّرين المضمَّنة في Chrome لتصحيح أخطاء الإضافات وكذلك صفحات الويب. راجِع هذا البرنامج التعليمي حول تصحيح أخطاء الإضافات للاطّلاع على مزيد من المعلومات.

لماذا لا تعمل مطابقات أحرف البدل مع نطاقات المستوى الأعلى (TLD)؟

لا يمكنك استخدام أنماط مطابقة أحرف البدل، مثل http://google.*/*، لمطابقة نطاقات المستوى الأعلى (TLD) (مثل http://google.es وhttp://google.fr) بسبب تعقيد حصر المطابقة هذه على النطاقات المطلوبة فقط.

على سبيل المثال، http://google.*/*، تتم مطابقة نطاقات Google، وكذلك http://google.someotherdomain.com. بالإضافة إلى ذلك، لا تملك العديد من المواقع الإلكترونية جميع نطاقات المستوى الأعلى (TLD) لنطاقها. على سبيل المثال، لنفترض أنّك تريد استخدام http://example.*/* لمطابقة http://example.com مع http://example.es، إلا أنّ http://example.net موقع إلكتروني عدائي. إذا تضمّنت الإضافة خطأً، من المحتمل أن يهاجم الموقع الإلكتروني العدائي الإضافة لكي تحصل على الامتيازات الأكبر للإضافة.

يجب تعداد نطاقات المستوى الأعلى (TLD) التي تريد تشغيل الإضافة عليها بشكل صريح.

لماذا لا تنشط واجهة برمجة تطبيقات الإدارة الأحداث عند تثبيت/إلغاء تثبيت الإضافة؟

صُمّمت management API للمساعدة في إنشاء إضافات بديلة لصفحات علامات التبويب الجديدة. لم يكن الغرض منه تنشيط أحداث التثبيت/إلغاء التثبيت للإضافة الحالية.

كيف يمكن للإضافة تحديد ما إذا كانت سيتم عرضها للمرة الأولى؟

ويمكنك الاستماع إلى حدث runtime.onInstalled. اطّلِع على إدخال الأسئلة الشائعة هذا.

الميزات والأخطاء

أعتقد أنني وجدت خطأ. كيف أتأكد من إصلاحه؟

أثناء تطوير إضافة، قد تجد سلوكًا لا يتطابق مع وثائق الإضافات وقد يكون نتيجة لخطأ في Chrome. وأفضل ما يمكنك القيام به هو التأكد من تقديم تقرير مناسب حول المشكلة، ومن أن فريق Chromium لديه معلومات كافية لإعادة إنتاج السلوك.

الخطوات التي يجب اتباعها للتأكد من ذلك:

  1. التوصل إلى أدنى إضافة اختبار توضح المشكلة التي ترغب في الإبلاغ عنها. يجب أن تحتوي هذه الإضافة على أقل قدر ممكن من التعليمات البرمجية لإظهار الخطأ، وبشكل عام يجب أن تتضمن 100 سطر أو أقل من ذلك. في كثير من الأحيان، يجد المطورون أنه لا يمكنهم إعادة إنتاج مشكلاتهم بهذه الطريقة، وهو مؤشر جيد على أن الخطأ في التعليمات البرمجية الخاصة بهم.
  2. ابحث في متتبع المشكلات على http://crbug.com لمعرفة ما إذا كان هناك شخص ما قد أبلغ عن مشكلة مماثلة أم لا. تم حفظ معظم المشاكل المتعلقة بالإضافات ضمن component=Platform>الإضافات، لذا للبحث عن خطأ في الإضافة يتعلق بوظيفة chrome.tabs.executeScript (على سبيل المثال)، ابحث عن "component=Platform>Extensions Type=Bug chrome.tabs.executeScript"، الذي سيعرض لك قائمة النتائج هذه.
  3. في حال العثور على خطأ يصف مشكلتك، انقر على رمز النجمة ليتم إعلامك عندما يتم إجراء تحديث للخطأ. لا تردّ على الخطأ بقول "أنا أيضًا" أو تسأل "متى سيتم إصلاح ذلك؟"، لأنّ هذه التعديلات قد تؤدي إلى إرسال مئات الرسائل الإلكترونية. أضف تعليقًا فقط إذا كانت لديك معلومات (مثل حالة اختبار أفضل أو إصلاح مقترح) من المرجح أن تكون مفيدة.
  4. إذا لم تجد خطأً مناسبًا لتمييزه بنجمة، يمكنك تقديم تقرير مشكلة جديد على http://crbug.com/new. كن واضحًا قدر الإمكان عند ملء هذا النموذج: اختَر عنوانًا وصفيًا واشرح خطوات إعادة إظهار الخطأ وصِف السلوك المتوقَّع والفعلي. أرفق مثال الاختبار بالتقرير وأضف لقطات شاشة إذا لزم الأمر. كلما سهّل تقريرك على الآخرين إعادة إظهار مشكلتك، زادت فرصة إصلاح الخطأ على الفور.
  5. انتظِر حتى يتم تعديل الخطأ. يتم فرز معظم الأخطاء الجديدة في غضون أسبوع، على الرغم من أن التحديث قد يستغرق وقتًا أطول في بعض الأحيان. لا تردّ على الخطأ ليسألك عن موعد إصلاح المشكلة. إذا لم يتم تعديل الخطأ بعد أسبوعين، يُرجى نشر رسالة على مجموعة المناقشة تحتوي على رابط للرجوع إلى الخطأ.
  6. إذا أبلغت عن الخطأ في مجموعة المناقشة وتم توجيهك إلى إدخال الأسئلة الشائعة هذا، فيُرجى الرد على سلسلة المحادثات الأصلية مع إدراج رابط إلى الخطأ الذي ميزته بنجمة أو أبلغت عنه. سيسهل ذلك على الآخرين الذين يواجهون نفس المشكلة العثور على الخطأ الصحيح.

لديّ طلب متعلّق بالميزات. فكيف يمكنني الإبلاغ عنها؟

إذا حدّدت ميزة (خاصةً إذا كانت مرتبطة بواجهة برمجة تطبيقات تجريبية) يمكن إضافتها لتحسين تجربة تطوير الإضافة، تأكَّد من تقديم الطلب المناسب في أداة تتبُّع المشاكل.

الخطوات التي يجب اتباعها للتأكد من ذلك:

  1. ابحث في أداة تتبُّع المشاكل على http://crbug.com لمعرفة ما إذا كان المستخدم قد طلب ميزة مشابهة. يتم تقديم معظم الطلبات ذات الصلة بالإضافات ضمن component=Platform>الإضافات، لذا للبحث عن طلب ميزة إضافة يتعلق باختصارات لوحة المفاتيح (على سبيل المثال)، ابحث عن "component=Platform>Extensions Type=Feature shortcuts"، الذي سيعرض لك قائمة النتائج هذه.
  2. في حال العثور على تذكرة مطابقة لطلبك، انقر على رمز النجمة ليتم إعلامك عند تلقي الخطأ تحديثًا. لا تردّ على الخطأ بقول "أنا أيضًا" أو تسأل "متى سيتم تنفيذ هذا الإجراء؟"، لأنّ هذه التعديلات قد تؤدي إلى إرسال مئات الرسائل الإلكترونية.
  3. في حال عدم العثور على تذكرة مناسبة لتمييزها بنجمة، يمكنك تقديم طلب جديد على http://crbug.com/new. يُرجى تقديم أكبر قدر ممكن من التفاصيل عند ملء هذا النموذج: اختَر عنوانًا وصفيًا واشرح الميزة التي تريدها بالضبط وكيف تنوي استخدامها.
  4. يُرجى الانتظار إلى أن يتم تعديل طلب الدعم. يتم فرز معظم الطلبات الجديدة في غضون أسبوع، على الرغم من أن التحديث قد يستغرق وقتًا أطول في بعض الأحيان. لا ترد على التذكرة تسأل عن وقت إضافة الميزة. إذا لم يتم تعديل طلب الدعم بعد أسبوعين، يُرجى نشر رسالة على مجموعة المناقشة تحتوي على رابط للرجوع إلى طلبك.
  5. إذا أبلغت عن طلبك في الأصل ضمن مجموعة المناقشة وتم توجيهك إلى إدخال الأسئلة الشائعة، يمكنك الردّ على سلسلة المحادثات الأصلية باستخدام رابط للتذكرة التي ميزتها بنجمة أو فتحتها. سيسهل هذا على الآخرين الذين لديهم نفس الطلب العثور على التذكرة الصحيحة.