Professional Documents
Culture Documents
Chrome Extensions Full Ebook PDF
Chrome Extensions Full Ebook PDF
2.5تجربة اإلضافات اميطّرة عنٓ اميتصفح قبه رفعَا عنٓ امسّق 8 . . . . . . . . . . . . . . . . . . . . . . . .
5.0شراء اميُ نحق ميرة ِاحدة ،أِ أشتراك امشَري /امسنّي 44 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ِحتٓ ٔ يقّو اميطّرِن بامتعديه عنٓ اميتصفح ذاتُ إلضافة ِظائف أخرْ ىعينة (كإدارة
اميّاقع اميفضنة ىحٕ ً ،أِ إضافة مينع اإلعٕنات ىن اميّاقع اإلمكترِنية) ،يّفر صانعّا اميتصفحات ىا
ُيسيٓ باإلضافات أِ اميُ نحقات يتً تطّيرٍا عنٓ أيدي ىطّرين آخرين تسيح منيستخدىين بتحيينَا
عنٓ ىتصفحاتًَ آلداء ِظائف ىعينة.
1.2امتقنيات اميستخدىة
يعتيد بناء إضافات أِ ىنحقات اميتصفح عنٓ تقنيات امّيب األساسية ٍِي:
:HTML -مغة ترىيز ِتعني ىجيّعة األك ّاد امّصفية اميستخدىة إلنشاء ِتصييً صفحات ِىّاقع
امّيب ٍِي اختصار مٖ ِ Hyper Text Markup Languageمقراءة اميزيد حّل ٍذٌ امنغة ىن ِيكيبيديا.
:CSS -مغة تَتً بتنسيق صفحات امّيب ِتصييً اميّاقع متظَر بصّر جيامية ،كاألمّان ِامصّر
ِامخنفيات .فٖ HTMLيركز عنٓ اميحتّْ امخاص بامصفحةِ ،امٖ CSSىَتية بامتنسيق ِترتيب ٍذا
اميحتّْ امذي يظَر مزائر صفحة امّيبِ ،مقراءة اميزيد حّل ٍذٌ امنغة ىن ِيكيبيديا.
ٍِ :JavaScript -ي مغة برىجة ىخصصة مبخ امحياة عنٓ صفحات امّيب ،فَي تجعه صفحة امّيب
زر ىا؟ أِ ىاذا
أكحر تفاعنية ىع اميستخدو .ىاذا تريد أن يحصه عندىا يقّو اميستخدو بامضغط عنٓ ٍ
تريد أن يحصه عندىا تتأكد ىن تحييه صفحة ِيب كاىنة ىع امصّر ِغيرٍا عند اميستخدو؟ كه
ٍذٌ األحداث تستطيع تّميَا باستخداو مغة ٍِ JavaScriptنا اميزيد حّل ٍذٌ امنغة ىن ِيكيبيديا.
باإلضافة منتقنيات أعٌٕ ،فعنٓ اميطّر أن يينك خنفية ِمّ كانت صغيرة في امتعاىه ىع ٍياكه
امبيانات كٖ:
ٍِ :JSON -ي اختصار مٖ ٍِ JavaScript Object Notationي صيغة تيحيه بيانات يسَه نقنَا ِتخزينَا.
ٍِ :XML -ي اختصار مٖ ٍِ Extensible Markup Languageي مغة ترىيز ىخصصة مّصف امبيانات ِنقنَا
ِتخزينَا كذمك .ىحال ٔستخداو ِ JSONىا يّازيُ في XMLىن ِيكيبيديا
مكن مألسف ٔ تعيه اإلضافات بّجّ د ىتصفح كرِو عنٓ األجَزة امذكية امتي تعيه ب نظاو
Androidأِ ،iOSفامي تصفح ٔ يدعً عيه ىنحقاتك حتٓ بّجّد اميتصفح.
ٍِّ :Browser Action - 1امنّع امذي يظَر في شريط األدِات امخاص بيتصفح كرِو بجانب شريط
امعناِين كيا ٍّ ىّضح بامصّرة ِ 2.2.0تسيح بّضع أيقّنة ميتفاعه ىعَا ام يستخدو بامضغط عنيَا متظَر
نافذة ىنبحقة ىحٕ ً.
ُيستخدو ٍذا امنّع بامعادة ىن اإلضافات امتي تقدو ِظائف عاىة ِغير ىقتصرة منعيه بّجّد صفحة
ِيب برابط ىخصص ،كإضافة ىنع اإلعٕنات امتي تعيه عنٓ كافة صفحات امّيب ِميس فقط
صفحات فيسبّك عنٓ سبيه اميحال ٔ امحصر.
ٍِّ :Page Action - 2امنّع امذي يظَر في شريط امعناِين كيا ٍّ ىّضح بامصّرة ِ 2.2.2تسيح كذمك
بّض ع أيقّنة ىن اختيارك ِتسيح كذمك بتفاعه اميستخدو ىع األيقّنة متظَر مُ نافذة ىنبحقة في حال قاو
بامضغط عنيَا.
ُيستخدو ٍذا امنّع ىن اإلضافات امتي تقدو ِظائف ىخصصة منصفحة اميفتّحة حامياً ِميس عنٓ كه
امصفحات (األمسنة) اميفتّحة حامياً عنٓ ىتصفح كرِو بعكس اإلضافات ىن نّع .Browser Action
أىحنة مَذا امنّع ىن اإلضافات ،اإلضافات امتي ُتظَر أسياء اميكتبات اميُ ستخدىة في اميّقع اميفتّح
حامياً ،أِ إضافة إلظَار نّع امخط اميُ ستخدو في امفقرة اميحددة في ٍذٌ امصفحة امحامية ٍِكذا.
ٍ ٔ - 3ذا ِٔ ذاك :في حال كنت تريد أن تعيه اإلضافة في ام خنفية دِن حاجة متفاعه اميستخدو ،فٕ
داعي متحدد أي نّع ىن األنّاع امسابق ذكرٍا.
2.3امّصّل مإلضافات ُ
اميسطبة عنٓ ىتصفح كرِو
رؤيتك مإلضافات اميّجّدة في شريط األدِات أِ في شريط امعناِين ٔ يعني أن ٍذٌ ٍي كه
اإلضافات اميُ سطبة مديك! فكيا أشرت مننّع األخير ٍِّ ا منّع امذي يعيه في امخنفية ِٔ حاجة ميتفاعه
اميستخدو ىع اإلضافة! مذمك ِ مرؤية كافة اإلضافات اميُ سطبة في ىتصفح كرِو ىن خٕل:
- 2امضغط عنٓ أيقّنة (اإلعدادات) ،جً امذٍاب مٖ (اميزيد ىن األدِات – ِ ،)More Toolsىن جً (اإلضافات –
)Extensionsكيا تشير امصّرة رقً :2.3.0
عنٓ ىستّْ ىتصفح كرِوِ ،حتٓ يفًَ اميتصفح أن ٍذٌ ٍي إض افة أِ ىنحق ِميست ىجرد
صفحة ِيب عادية ،فيجب عنيك أن ُتعرّ ف ذمك في ىنف أساسي بإسً ٍِّ Manifest.jsonعبارة عن
ىنف بَيكنية بيانات ىن نّع JSONمتيحيه صيغة بيانات اإلضافة ،كإسً اإلضافة ،أيقّنتَاِ ،صف
اإلضافة ،نّع اإلضافة ِغيرٍا ىن اميعنّىات األخرْ امتي يقرأٍا ىتصفح كرِو ُ
ِيظَرٍا منيُ ستخدو
في صفحة اإلضافات امتي تعنينا كيفية امّصّل إميَا.
صفحة | 5 ىدِنة خارج امصندِق
إذاً ،امينف األساسي مدينا ٍّ ٍِ Manifest.jsonذٌ ٍي صّرة تشرح تّزيع امينفات ِاميجندات:
-ىجند :CSSيحتّي عنٓ كافة ىنفات ىن نّع CSSمتنسيق ىحتّْ ِصفحات اإلضافة امتي تعرض
منيُ ستخدو (كصفحة ِ popup.htmlتنسيقاتَا).
-صفحة ِيب ٍِ :Popup.htmlي امصفحة امتي ستحيه ىحتّْ امنافذة امينبحقة عند ضغط اميُ ستخدو
أليقّنة اإلضافة (نستنتج ىن ٍذا امكٕو أن نّع اإلضافة ٍّ .)Browser Action
ِ -ىنفنا األساسي ٍّ ِ :Manifest.jsonيحتّي عنٓ كافة تفاصيه اإلضافة ىن إسًِ ،صف ،األيقّنات
ِىساراتَا ِغيرٍاِ ،صّرة رقً 2.4.2ستّضح طبيعة ىحتّْ ِاحدة ىن اإلضافات مينف
:Manifiest.json
صّرة رقً 2.4.2تّضح أًٍ امقيً امتي يجب أن تتّافر في ىنف Manifest.jsonاألساسي
:Name -يحتّي عنٓ اسً اإلضافة ٍِّ أسً امذي سيظَر منيُ ستخدو عند عرضُ مكافة اإلضافات
اميُ سطبة في اميتصفح أِ في صفحة اإلضافة في امسّق امخاص بيتصفح كرِو مإلضافات.
ٍِّ :Version -رقً نسخة اإلضافةِ ،سيساعد ٍذا امفيديّ بعنّان " كيف تقّو بتصدير برىجياتك
بطريقة صحيحة" أِ Software Versioningمتعطي دٔمة منيستخدو عن طبيعة ٍذٌ امنسخة.
:Description -يحتّي عنٓ ِصف اإلضافة ٍِّ ذاتُ امذي سيظَر منيستخدو في صفحة اإلضافات
اميُ سطبة أِ في صفحة اإلضافة في امسّق امخاص بيتصفح كرِو مإلضافات.
:Icons -يحتّي عنٓ ىسار ِأسياء األيقّنات بأحجاىَا اميختنفة ِيفضه أن يحتّي عنٓ جٕث جّدات
مأليقّنات.
:Author -قيية غير ضرِرية ِييكن أستغناء عنَا ،ييكن اإلشارة ميّقع ىطّر ٍذٌ اإلضافة.
ٍِّ :browser_action -إلعٕو اميتصفح بنّع اإلضافة أنَا ىن نّع ،Browser Actionأي ستظَر أيقّنة
اإلضافة في شريط األدِات بجانب شريط امعناِين ،قينا بتحديد ىسار ِإسً ىنف األيقّنة امذي
حددنا ىسار امصفحة امتي يجب أن ُتعرض عند ضغط
سيظَر بجانب شريط امعناِينِ ،كذمك ّ
اميُ ستخدو عنٓ أيقّنة إضافتك.
يّجد امعديد ىن امقيً األخرْ اإلضافية امتي ييكن ِضعَا في ىنف ،Manifest.jsonييكن اإلستعانة بَذا
اميصدر امرسيي ىن جّجه إليجاد اميزيدِ ،ىن أًٍ األىّر امتي يجب اإلطٕع عنيَا ٍي قيية
Permissionsحيخ تتطنب بعض ا إلضافات صٕحيات ىعينة منعيه بشكه صحيح ،كصٕحية امّصّل
منيّقع امجغرافي امحامي منيستخدو Physical Locationأِ امٖ GeoLocationعنٓ سبيه اميحال! ِميس
بامضرِرة أن تحتّي كه إضافة عنٓ صٕحيات! مكن سيتً عرض امصٕحيات اميطنّبة منيستخدو عند
- 4ييكنك بعدٍا سحب ىجند اإلضافة (بيا يحتّيُ ىن ىجندات ِىنفات ِأٍيَا ىنف )Manifiest.json
ِإ فٕتُ في ٍذٌ امصفحة ،أِ ببساطة امضغط عنٓ ِ Load Unpacked Extensionتحديد ىسار ىجند
اإلضافة ( ٍذٌ اإلضافة ستكّن ىرفقة ىع امكتاب اإلمكترِني منتجربة).
- 3أي تعديه تقّو بُ في ىنفات اإلضافة ،كإضافة صّر ِأيقّنات جديدة ،أِ تحديخ في ىنفات
جافاسكريبت أِ امستايه ،يجب عنيك أن تقّو بتحديخ اإلضافة ىن خٕل امضغط عنٓ Reloadفي
امصّرة رقً ِ 2.5.2ترْ تعديٕتك فعنياً عنٓ اميتصفح.
ّ
ِىحنَا يشرح ٍذا امفيديّ اميتّاضع بأسنّب كرتّني ِىبسط عن ىفَّو امّاجَات امبرىجية،
امطباخ ،به تسأل امنادل ِتطنب ىنُ ىا
ّ بأنك عندىا تذٍب إمٓ ىطعً ىا ،فأنت ٔ تتعاىه ىباشرة ىع
تشاء ىن طنبات ِيقّو ٍّ بإيصامَا منيطبخ متجَيز طنبياتك ميعّد مك امنادل بيا طنبت عند جَّزية
امطنب! فامنادل ٍنا معب دِر امّسيط أِ ىا ُيسيٓ بامّاجَة امتي تعاىنت أنت ىعَا دِن امخّض
بامتفاصيه فييا يحصه داخه اميطعً ِىطبخُ.
عّدة إمٓ ىتصفح كرِوِ ،حتٓ يتسنٓ منا امتعاىه ىع امخدىات امتي يقدىَا اميتصفح،
كاستخداو ذاكرة اميتصفح أِ عرض اميّاقع اميفضنة منيست خدو أِ ىراقبة طنبات امصفحات اميفتّحة
حامياً ،امتعاىه ىع امكّكيز .إذاً ٍذا ي تطنب ىنا ىعرفة امكّد امداخني امخاص باميتصفح؟ بامطبع ٔ،
جّجه تّفر منا ِاجَة برىجية بسيطة ٔستدعائَا ِاستخداىَا منّصّل ميّارد اميتصفح دِن رؤية
كّد اميتصفح ىن امداخه.
تً إضافة كنية Permissionsفي ىنف ِ Manifest.jsonكيا نرْ أنَا تحتّي عنٓ ىصفّفة ،أي ييكن أن
تحتّي اإلضافة عنٓ ىجيّعة ىن امصٕحيات األخرْ امتي نحتاجَا.
اآلن ِعبر كّد جافا سكريبت صغير ييكننا امحصّل عنٓ اميّقع امجغرافي ميستخدو اإلضافة:
صّرة رقً 3.2.2تّضح دامة امحصّل عنٓ اميّقع امجغرافي منيستخدو عند استدعاء امدامة
سنٕحظ عبر ٍذا امكّد امصغير بعرض نقاط امطّل ِامعرض ميستخدو اإلضافةِ ،طبعًَ في شاشة
امكّنسّل في ىتصفح كرِو.
بكه بساطة من يتً تنفيذ ٍذٌ امتعنييات ِت ظَر رسامة خطأ في شاشة امكّنسّل بأن اإلضافة ٔ
تينك صٕحيات منّصّل امٖ :GeoLocation
صّرة رقً 3.2.3تّضح رسامة امتحذير بأن صٕحية GeoLocationغير ىتّفرة ِيجب إضافتَا
ِٔزمنا في جزئية امتعاىه ىع امّاجَة امبرىجية امخاصة بيتصفح كرِو منّصّل ألًٍ امخدىات
ِاميييزات في ىتصفح كرِوِ ،اآلن ِبامطبع أي إضافة ٔبد مَا ىن أن تقّو بتخزين بعض امبيانات
حتٓ تعّد مَا ٔحقاً ،كإعدادات اإلضافة عنٓ سبيه اميحال؟
قبه كه شيء ،يجب عنينا إضافة صٕحية امدخّل منذاكرة في ىنف Manifest.jsonكيا أشرنا سابقاً:
تيكننا ىن حفظ امبيانات ِأستعٕو عنَا في اميتصفح حتٓ بعد إغٕقٍُِ ،نا كّد بسيط
متخزين ىعنّىات بسيطة عبر استخداو امّاجَة امبرىجية امخاصة بجّجه:
صّرة رقً 3.3.2عبارة عن دامة متخزين كائن أِ قيية ىعينة في ذاكرة اميتصفح
عبر ٍذٌ امدامة ،سنستعن ً عن امبيانات امتي قينا بتخزينَا ىسبقاً في اميفتاح ِ Valueعرضَا عنٓ شاشة
امكّنسّلٍِ ،ذٌ ٍي امنتيجة:
صّرة رقً 3.3.4تّضح امقيية امتي استعنينا عنَا ِعرضَا في شاشة امكّنسّل
ّ
تّفر منا ربط اميتصفح بحسابنا عبر امبريد مكن ،ىا امفرق امجٍّري بينَيا؟ نعنً جييعاً أن جّجه
اإلمكترِني متخزين اميّاقع اميفضنةِ ،إعدادات اميتصفح ِحتٓ اإلضافات اميسطبة...حتٓ
نستطيع ىن جَاز حاسّب آخر ىزاىنة ىّاقعنا اميفضنة ِإ عدادات اميتصفح ِاإلضافات ِغيرٍا
ىن األشياء امتي ييكن إدارتَا دِن امحاجة منقياو بذمك يدِياً كه ىرة نقّو فيَا بتحييه ىتصفح
كرِو!
فنّ قيت بإعادة تَيئة منظاىك ِتيت إزامة ىتصفح كرِو ىن حاسّبك ٔ ،تيأس إذا قيت سابقاً
بربط ىتصفحك عبر بريدك اإلمكترِني معيه ىزاىنة مكه ذمك! فكه شيء بامحفظ ِامصّن كيا ٍّ
ىُ شار بامصّرة امتامية:
صّرة رقً 3.3.5ىن شاشة اإلعدادات امخاصة بيتصفح كرِو تّضح ربط اميتصفح بامبريد اإلمكترِني معيه ىزاىنة مإلعدادات
اآلن ،عّدة امٓ ِاجَتنا امبرىجية ِ chrome.storage.syncىا قيت بتخزينُ ٍنا ،سيتً كذمك عيه
ىزاىنة مُ بحساب اميستخدو اميربّط ببريدٌ اإلمكترِني .بامعادة ،يجب عنيك أن تقّو بتخزين
إعدادات إضافتك ىن خٕل ِ chrome.storage.syncميس chrome.storage.localحتٓ يتً ىزاىنة
إعدادات إضافتك في حال اضطر اميُ ستخدو إلعادة تس طيب ىتصفح كرِو ِإضافتك ىرة أخرْ!
مكن احذر! جّجه تقّل بأن اميطّّ ر يستطيع ىزاىنة أي شيء فعًٕ ،مكن ٍناك حجً ى ّ
حدد ميا
ييكنك ىزاىنتُ ِحفظُ ،ف امحجً امكني اميسيّح مك بُ ٍّ 012,411بايت فقطِ ،حجً كه كائن ييكنك
تخزينة بيفتاحُ ٍّ 8,092بايت فقطِ ،أقصٓ عدد ىن ام كائنات ييكنك تخزينَا ٍّ 502فقطِ ،إٔ،
س يحصه خطأ أجناء حفظك منبيانات.
حتٓ نقّو بذمك ،نقّو بتجَيز امسكريبت ِميكن ٍِّ background.jsيحتّي عنٓ امكّد امذي
أريد تنفيذٌ ميعيه في امخنفية ،مكن يتبقٓ أن أعطي امتعنييات منيتصفح بأن ٍذا امينف يجب تنفيذٌ
فّر تشغيه إضافتي ٍِّ ...ىا يجب أن أقّو بتحديدٌ في ىنف Manfiest.jsكيا تّضح امصّرة رقً
:3.4.0
ّ
ِحددنا ىسار امسكريبت امذي نريد تنفيذٌ ميعيه في امخنفية ٍِّ قينا بإضافة background
داخه ىجند ِ jsاسً امينف ٍّ ِ background.jsمكن ،ىا ٍّ امٖ ِ persistentمياذا يحيه قيية true؟
ىاذا مّ مً أضع ٍذٌ امقيية؟ أِ قيت بتعريفَا بٖ falseىحًٕ؟ سيتً تنفيذ امكّد ميرة ِاحدة فقط،
ِمن ترْ امنتائج بعد عشر دقائق ألن ىتصفح كرِو أمقٓ نظرة ِاحدة ِقاو بامتنفيذ ِأنَٓ بعد ذمك كه
شيء مُ عٕقة بامسكريبت!
ىجرد رسامة تظَر فّر تشغيه اميتصفح يتً طبا عتَا في شاشة امكّنسّل ،مكن يبقٓ
امسؤال ...كيف أتابع ىخرجات امسكريبت امذي يعيه في امخنفية؟ كَذٌ امرسامة ىحًٕ؟ بيجرد ذٍابنا
مصفحة اإلضافات اميُ سطبة ،سنرْ شيئاً جديداً أضيف في خانة إضافتنا:
إذا كانت إضافتك تعيه في ىّاقع ىعينة ،كإضافة Facebook Mention Tagging Blocker
اميخصصة مينع اإلشارة إميك في ىنشّر ىا أِ صّرة ىا عنٓ فيسبّك ،فَذا امنّع ىن اإلضافات تضطر
ألن تحقن كّد ىعين داخه صفحات فيسبّك ِفقط! ٍِّ ىا ُيسيٓ بٖ Content Scriptأي امكّد امذي
قينا بحقنُ في صفحة فيسبّك أصبح جزءاً ىنَا.
سأقّو اآلن بإنشاء سكريبت خاص في ىجند jsيحيه اسً ِ content_script.jsأريد ىن ٍذا
امسكريبت أن يتً حقنُ في صفحة فيسبّك ،ىا امذي أحتاجُ اآلن حتٓ يعرف ىتصفح كرِو بذمك؟
بامطبع! ىنف Manifest.jsonعنيُ أن يحيه بعض امتعنييات كيا فعننا ىع :Background Scripts
صّرة رقً 3.4.5تّضح آمية إضافة كّد يتً حقنُ في صفحات ىعينة
-قينا بتعريف أن ٍناك Content Scriptsسيتً حقنًَ ،مكن أين يجب أن يقّو كرِو بحقنًَ؟ قننا أنُ
يجب أن يتً امحقن داخه صفحات فيسبّك فقط! ِِضحنا ذمك داخه ىصفّفة ٍِ matchesي ىن
امييكن أن تحتّي عنٓ أكحر ىن ىّقع ىحٕ ً أِ صفحات ىعينة في فيسبّك.
ّ
حددنا في قيية ِ jsامتي تحيه كذمك ىصفّفة ،أن امسكريبت امذي أريد حقنُ داخه صفحات فيسبّك -
آن
ٍّ content_script.jsاميّجّد داخه ىجند ِ jsىن امييكن كذمك أن أحقن أكحر ىن سكريبت في ٍ
ِاحد بٕ أي ىشكنة!
-أىا امقيية األخيرة run_atفَي تّضح ىتٓ أريد أن يتً حق امسكريبت؟ بعد تحييه امصفحة كنياً أِ
فّر تحيينَا؟ تً تحديد فّر تحيينَا عبر قيية ِ ،document_startىن امييكن استبدامَا بٖ
document_endمّ أردنا تنفيذ امسكريبت فّر أنتَاء ىن تحييه امصفحة.
ٍ -ه ييكن حقن أكّاد ىن CSS؟ بامطبع! ىن امييكن أن تصيً نافذة ىنبحقة داخه صفحة فيسبّك،
ِييكن حقن أكّاد CSSبنفس طريقة حقن أكّاد jsىع استبدامَا بٖ ِ CSSتحديد ىسار ىنفات .CSS
ِىا أريد إظَارٌ في شاشة امكّنسّل صّرة رقً 3.4.6تّضح ىحتّْ content_script.js
رسامة صغيرة يتً طبعَا في شاشة امكّنسّل تّضح بأن امكّد فعٕ ً تً حقنُ بنجاح! اآلن ،دعنا نفتح
صفحة فيسبّك ِنرْ ٍه فعٕ ً تً حقن امكّد ِتنفيذٌ داخه صفحة فيسبّك أو ٔ؟
صّرة رقً 3.4.7تّضح ناتج امسكريبت امذي قينا بحقنُ داخه صفحة فيسبّك
ٍه يجب عنينا اإلكتفاء فقط بٖ Content Scriptدِن امحاجة منتعاىه ىع Background Scripts
حيخ أنني مست بحاجة ألي شيء ُي نفذ في امخنفية؟ ٍذا سؤال ّ
جيد! ٍناك بعض امقيّد في Content
Scriptحيخ أني ٔ أستطيع امّصّل مكافة ىييزات امّاجَة امبرىجية امتي تّفر ٍا مي جّجه ِأنا
داخه ،Content Scriptبعكس Background Scriptsامتي تس يح مي بامّصّل منّاجَة امبرىجية بكافة
تفاصينَا! إذاً أنا بحاجة منّع ىن امتّاصه بين Background Script ِ Content Scriptحتٓ أستطيع
امّصّل منّاجَة امبرىجية بشكه امكاىه!
إن أنَيت فنجان قَّتك ،سأقترح عنيك بصب اميزيد ،ألن ٍذٌ امنقطة تحديداً ذات أٍيية كبيرة
ِستحتاجَا بامتأكيد يّىاً ىا!
عندىا نقرأ Message Passingأِ تبادل امرسائهٍ ،ذا يعني أن ٍناك شيئان ىنفصٕن يريدان
امتحدث أِ امتّاصه فييا بينًَ ،أِ إرسال رسامة ىن جانب إمٓ آخرِ .كيا تحدجنا عن امفرق بين
ِ Background Script ِ Content Scriptأننا بحاجة منّع ىن امتّاصه بينَيا ،إذاً ٍذا امقسً س ُيجيب
بامتحديد عن كيفية امقياو بَذا امتّاصه.
حتٓ نقّو بإرسال رسامة ىن أي سكريبت ىن داخه Content Scriptىن خٕل ِاجَة برىجية
ىتصفح كرِو ،نستخدو ِ chrome.runtime.sendMessageتحتّي عنٓ امكائن (امرسامة) امتي نريد
إرسامَا امٓ اميستقبهِ ،في حامتنا تنك سيكّن اميستقبه ٍّ ِ ،background.jsننتظر امرد امذي سيتً
إرسامُ ىن background.jsفي حال فعٕ ً أردنا امرد عنٓ ٍذٌ امرسامة.
قيت بامفحص إذا كان امكائن اميُ رسه يحيه اسً ِ greetingإذا كان كذمك أرسه مُ امرد " I got
!"this, goodbyeدعنا نرْ اآلن امنتائج:
ِبامضغط عنٓ ِ F12نحن في صفحة فيسبّك معرض شاشة امكّنسّل ،سنرْ امرد امذي أتانا
ىن background.jsبنجاح! بَذٌ امطريقة استطعنا أن نرسه رسائه ىن Content Scriptامٓ Background
ِ Scriptاستقبه Content Scriptامرد بنجاح.
امنّع امذي تطرقنا مُ قبه قنيه ُيسيٓ بٖ Simple One-Time Requestsأي نرسه رسامة ِننتظر
امرد ٍِذا كه شيء ! ٍذا اميصدر ىن جّجه يشرح أنّاع أخرْ متبادل امرسائه ،ىاذا مّ احتجنا مقناة
ىفتّحة بين Background Script ِ Content Scriptمتبادل أكحر ىن رسامة بنفس امّقت؟ أِ أخذ إجراء
ىعين عند رد ىعين؟ ٍذا امنّع ُيسيٓ بٖ Long Live Connectionأِ أتصال اميفتّح.
ييكن كذمك تبادل رسائه بين أكحر ىن إضافة! به ِييكنك أيضاً إرسال رسامة ىن ىّقعك
امشخصي إمٓ إضافتك بكه سَّمة .كه ٍذا يعتيد عنٓ طبيعة ِِظيفة اإلضافة امتي تريد تطّيرٍا.
امّاجَة امبرىجية امخاصة بيتصفح كرِو تسيح منا بذمك ،بإىكاننا ِضح نص ىكّن ىن 4
أحرف عنٓ األكحر ِتحديد امنّن امذي نريد ،دعنا نظَر رقً " "023أسفه أيقّنة اإلضافة كيا في صّرة
رقً :3.6.0
بامطبع منقياو بذمك ،ىن غير امينطقي أن ندع Content Scriptيقّو بَذا امعيه به ٔ نستطيع
أساساً امّمّج مَذٌ امينطقة ىن ِاجَة جّجه امبرىجية ِأنا داخه ،Content Scriptييكننا اإلستعانة بٖ
Background Scriptمتغيير امقيية بامخنفية ِامتحكً بامشارات كيا نشاء كيا ٍّ ىّضح في امصّرة:
معرض شارة أسفه أيقّنة إضافتنا صّرة رقً 3.6.2ىن ىنف background.js
باستخداو ٍ chrome.browserActionذا يعني نحن قادرين اآلن امّصّل مخصائص اإلضافة ىن نّع
ّ
ِحددنا امنص امذي ستحينُ امشارة ِ Badgeمّن امخنفية بكه سَّمة! ،Browser Action
أي تغيير نريدٌ أن يتً منشارة كتغيير منرقً أِ امنص ِأنا داخه ،Content Scriptف نحن بحاجة
منتّاصه امذي تطرقنا مُ بامنقطة امسابقة بين Background Script ِ Content Scriptىن خٕل Message
.Passing
قد تحتاج إضافتك بشكه أِ بآخر م تعطي منيستخدو تنبيُ ىعين ،أِ ُتظَر مُ رسامة ىعينة بعد
ّ
تّفر منا ىن خٕل امّاجَة امبرىجية كذمك ىا ُيسيٓ امقياو بّظيفة ىعينة داخه إضافتك .جّجه
بامتنبيَات أِ ُ Notification
متظَر رسامة ىعينة منيُ ستخدو.
في ٍذا امقسً ،سنتعنً كيف ُنظَر ٍذا امصندِق امصغير اميتّاضع منيُ ستخدو ىن خٕل اإلضافة:
ّ
ىعقد في ٍذا اإلشعار أِ امتنبيُ ،سيظَر ٍذا امصندِق امصغير أسفه امشاشة حتٓ مّ ٔ شيء
كانت نافذة جّجه كرِو ىُ صغرة ،مذمك ُتسيٓ بتنبيَات سطح اميكتب! ِكيا نرْ ىن امتنبيُ فإنُ
يحتّي عنٓ 3عناصر أساسية :أيقّنة ،عنّان منرسامةِ ،ىحتّْ منرسامةٍ .ناك امعديد ىن األنّاع
األخرْ ييكننا امقياو بَا عن طريق امّاجَة امبرىجية امتي تّفرٍا منا جّجه عبر ٍذا اميصدر.
حتٓ يتسنٓ م نا استخداو اإلشعارات أِ امتنبيَات ،يجب أن نحصه عنٓ امصٕحيات امٕزىة في ىنف
:Manifest.json
ٍِذا جزء ىن امكّد اميّضّع في ىنف ٍِّ background.jsامذي سيتً تنفيذٌ في امخنفية،
ِيحتّي عنٓ:
إلنشاء إشعار أِ تنبيُ ميظَر بعد ثانيتين ىن تشغيه اميتصفح ىثًٕ صّرة رقً 3.7.3ىن ىنف background.js
قينا بإنشاء كائن Objectيحيه ىّاصفات ِىعنّىات اإلشعار ،كنّع اإلشعار (امنّع األساسي ٍّ
ٍِ ،Basicناك أنّاع أخرْ ىن ٍذا اميصدر) ،عنّان امرسامة ،ىحتّْ امرسامةِ ،أخيراً ىسار األيقّنة.
اآلن ىعنّىات اإلشعار أِ امتنبيُ جاٍزة ،يتبقٓ منا فقط إنشاء امتنبيُ ِاستدعائُ عبر
ِ chrome.notifications.createتيرير امكائن امذي يحيه بيانات امتنبيُِ ،مكن ،أردت ٍنا إظَار امتنبيُ بعد
ىرِر جانيتين.
اآلن ،أنت قادر عنٓ إرسال تنبيَات منيُ ستخدو ،مكن ٔ ُتكحر ىنَا ،فاميستخدىين يكرٍّن مفت
اإلنتباٌ أكحر ىن امٕزو! ييكنك اآلن إنشاء إضافة مقراءة إشعارات فيسبّك أِ تّيتر ىحٕ ً ِإظَارٍا
منيُ ستخدو...أطربّنا بأفكاركً!
ٍّ سّق إمكترِني تً افتتاحُ في شَر ديسيبر ىن عاو 2101ميصبح امسّق امرسيي متحييه
تطبيقات امّيب ِىنحقات ىتصفح جّجه كرِو بيا يشينُ ىن إضافات أِ جييات أِ حتٓ أمعاب.
ييكن منيُ ست خدو تحييه ىنحقاتك ىن امسّق ،تقيييَاِِ ،ضع تعنيقات ىاِ ،حديحاً أصبح ييكن ىراسنة
اميُ ستخدو م يطّر اإلضافة إلخبارٌ عن ىشكنة ىا في اميُ نحق.
4.2امصيغة امنَائية ُ
منينحقات
قبه امرفع عنٓ امسّق ِامذي سنتطرق م ُ بامتفصيه في امنقطة امتامية ،يجب أن تقّو بتجييع
ىنفات ِىجندات اميُ نحق امخاص بك عنٓ شكه ىنف ِاحد ىضغّط ىن نّع ِ ZIPىن جً رفعُ عنٓ
امسّق .مكنٍ ،ه ٍذٌ ٍي امصيغة امنَائية مإلضافة؟
امصيغة امنَائية مإلضافة ٍي ٍِّ CRXىا يتعرف عنيُ ىتصفح كرِو أن ٍذا عبارة عن ىُ نحق
تابع مُ ،ييكننا إنشاء ٍذٌ امصيغة امنَائية ِمكن بيجرد رفع امينف اميضغّط امذي بَيئة ZIPعنٓ
امسّق سيقّو ِبشكه تنقائي تحّينُ امٓ CRXميكّن ج اٍز منتحييه ىن ق به اميُ ستخدىين دِن أن
يتدخه اميطّر بعي نية امتحّيه تنك.
عّدة إمٓ صفحة إضافات اميُ سطبة عنٓ امجَازِ ،سبق ِأن شرحنا كيف نقّو بتركيب إضافتنا
أجناء امتطّير عنٓ ىتصفح كرِوِ ،كان ٍناك طريقتان مذمك :إىا بسحب ىجند اإلضافة امذي يحتّي
عنٓ ىنف ِ Manifest.jsonباقي امينف ات إمٓ صفحة اإلضافات ،أِ ىن خٕل امضغط عنٓ Load
ِ Unpacked Extensionتحديد ىسار ىجند اإلضافة.
صّرة رقً 4.2.1متصدير اإلضافة إمٓ شكنَا امنَائي قبه امرفع إمٓ امسّق
ٍِذٌ امنافذة امينبحقة تخبرنا أين ٍّ ىسار إضافتنا ام تي نريد تحّينَا منصيغة امنَائية CRXكيا تشير
ٍذٌ امصّرة:
صّرة رقً 4.2.2متصدير اإلضافة إمٓ شكنَا امنَائي قبه امر فع إمٓ امسّق
كّننا نقّو بَذٌ امعينية ألِل ىرة ٔ ،داعي مّضع ىسار ىنف Private Keyألننا ٔ نينكُ بعد،
مذمك بيجرد انتَائنا ىن تحديد ىسار إضافتنا ِامضغط عنٓ Pack Extensionسنرْ امصيغة امنَائية
منيُ نحق باإلضافة مينف آخر بجانبُ بصيغة :PEM
صّرة رقً 4.2.4عند تركيب إضافة ألِل ىرة بصيغتَا امنَائية CRX
نفس امصندِق امذي سيظَر فّر تحييننا مإلضافة ىن امسّق امرسيي مكرِوُ ،يظَر امصندِق
فّر تحييننا مإلضافة :اسً اإلضافة ،أيقّنتَاِ ،امصٕحيات امتي تحتاجَا اإلضافة منعيه بشكه
صحيح ،ييكن منيستخدو امرفض (ِامذي ينتج بامطبع عدو تحييه اإلضافة) أِ امقبّل بامضغط عنٓ
Add extensionم ُت ضاف مقائية اإلضافات اميُ سطبة في صفحة اإلضافات.
إذا أردنا أن نقّو بعيه تعديه آخر مإلضافة أِ إضافة اميزيد ىن اميزايا إمٓ ىُ نحقناِ ،ىن جً
امتحّيه منصيغة امنَائية CRXىرة أخرْ ،فنحن اآلن بحاجة مينف PEMامذي قاو ىتصفح كرِو
بتّميدٌ منا أجناء قياىنا ألِل ىرة ىن تحّيه ىنفات اإلضافة إمٓ ، CRXفَّ بيحابة امختً امذي ختيُ منا
ىتصفح كرِو عندىا أنشأ منا ألِل ىرة ىنف ِ ، CRXإذا أردت امتعديه ىرة أخرْ عنٓ ىحتّْ اإلضافة
ِتّميد CRXجديد ،أنا بحاجة منختً ألجبت ٍّية ىُ نحقي ِيعطيَا ىا ُيسيٓ بٖ IDأِ اميعرّ ف امفريد
امخاص باإلضافة.
كيا أشرت سابقاً ،نحن بام ّاقع ٔ نحتاج إمٓ كه ٍذٌ امعينيات عند رفع اإلضافة إمٓ امسّق،
فعند رفع اإلضافة منسّق ألِل ىرة يقّو بشكه تنقائي بَذٌ امعنييةِ ،يحفظ منا امختً مديُ دِن رفعُ
كه ىرة إمٓ امسّق! مكن أردت اإلشارة إمٓ ٍذٌ امنقطة ِكيفية امقياو بَا في حال ِجدت ىّقع ىن
ّ
يّفر اإلضافة خارج سّق ىتصفح كرِو ِتحييه ىنف ينتَي بصيغة .CRX اميّاقع
نَاية شَر فبراير ىن عاو ِ ،2104اإلصدار رقً 33ىن ىتصفح كرِوِ ،بسبب اميشاكه األىنية
اميتزايدة امتي تعرض مَا اميُ ستخدىين بسبب اميُ ن حقات امتي كان ٍدفَا امضرر باميُ ستخدىين ،فقد
أجبرت جّجه اميطّرين عن ٓ رفع ىنحقاتًَ ِفقط عنٓ سّق كرِو (اميصدر)! ِٔ ييكن منيُ ستخدو
تحييه أي إضافة ىُ ستضافة خارج سّق كرِو اإلمكترِنيِ ،إن تً ،سيحصه عنٓ تحذير بذمك.
ييكنك رفع إضافتك أِ ىنحقاتك عنٓ استضافتك امخاصة في حامتين فقط :
-إذا قاو اميُ ستخدو بتفعيه ِضع اميطّرين ٍِّ ،األىر امذي قينا نحن بُ سابقاً متجربة اإلضافة.
ّ
يّضح تفاصينُ بامضغط ٍنا. -ىا ُيسيٓ بٖ ٍِّ Enterprise Policyىا
ِمكنِ ،كيا رأين ا في عينية تحّيه اإلضافة منصيغة امنَائية ِ CRXأنَا عينية ىُ نَكة بعض
امشيء ،فرفع اإلضافة ىباشرة إمٓ امسّق عنٓ شكه ىنف ىضغّط ِ ZIPيقّو امسّق مّحدٌ بتحّيه
ىنحقاتنا امٓ امصيغة امنَائية دِن تدخه ىن اميطّر ،قد زاح امكحير ىن امّقت مصامح اميطّرين.
كيا ِمن يقنق امي طّر ىن عينية تطّير امينحقات ِإعٕو اميُ ستخدىين بأن ٍناك نسخة جديدة
ىن إضافاتًَ ِيجب أن يقّىّا بتحيينَا يدِياً ،فيتصفح كرِو سيقّو تنقائياً بتحييه امنسخة
األحدث ىن ىنحقك أِ إضافتك دِن تدخه ىن اميُ ستخدو بيجرد رفعك مننسخة األحدث إمٓ امسّق،
ِبحنّل 24ساعة تكّن امنسخة األحدث في كافة ىتصفحات ىُ ستخدىيك.
حتٓ ييكننا نشر إضافتنا اآلن إمٓ امسّق ،ينزىنا شراء رخصة ىطّر ِامتي كيا أسنفنا ُتكنف
ميرة ِاحدة 5دِٔرات فقط ،بعد إتياو ٍذٌ امعينية امبسيطة يصبح مديك صفحة خاصة ميراقبة نشاط
إضافاتك امحامية أِ إضافة ىنحقات جديدة .صّرة رقً 4.4.0تشرح منا ىجيه اإلضافات امتي قيت
بنشرٍا عنٓ امسّق ِحامة كه ِاحدة ىنًَ:
ُ
ِامينحقات صّرة رقً 4.4.1ىن داخه صفحة اميطّرين امخاصة باإلضافات
ُ
ِامينحقات صّرة رقً 4.4.2ىن صفحة اميطّرين امخاصة باإلضافات
-جّجه تسيح منا برفع حتٓ 21ىُ نحق أِ إضافةِ ،إذا أردنا اميزيد نرسه طنب آخر مجّجه حتٓ
قيية قد تسيح مك
يتسنٓ منا رفع اميزيد ،ستقّو جّجه بيراجعة حسابك ِطبيعة إضافتك ِإن كانت ّ
باميزيد!
-ييكننا تعديه بعض اميعنّىات امَاىة كإسً اميطّر امذي سيظَر عنٓ صفحة اإلضافة بامسّقِ ،كيا
ّ
ىّضح اإلسً امذي يظَر ٍّ ِ ،Dev. Mohammad M. AlBannaىن جَة امسّق سيظَر اإلسً عنٓ ٍّ
ٍذا امشكه:
ّ
كيّفر رسيي مإلضافة ّ
اميطّر صّرة رقً 4.4.3تّضح عرض اسً
-ييكننا أن نحدد قائية ىختبرين إلضافاتنا ِىُ نحقاتنا عبر بريدًٍ اإلمكترِني ،متصنًَ دعّة فييا بعد
متجربة اإلضافة ىن امسّق ،ىن امييكن أن يكّن ٍؤٔء بقية أعضاء فريق امتطّير ىحًٕ ،ىن خٕل
تحديد ِ Testers Accountsبريدًٍ اإلمكترِني.
ِبحياس شديد ،دعنا نرفع أِل إضافة منا إمٓ امسّق عن طريق امضغط عنٓ زر Add New Item
أِ إضافة عنصر جديدٍِ ،ذٌ ٍي امصفحة امخاصة في إضافة أِل إضافة /ىنحق منا:
صّرة رقً 4.5.1تعرض كيفية رفع أِل إضافة منا عنٓ امسّق
كيا نشاٍد بامصّرة أعٌٕ ٔ ،داعي مرفع اإلضافة بصيغتَا امنَائية امتي أشرنا مَا سابقاً بٖ ،CRXبه
نرفعَا كينف ىضغّط عنٓ ٍيئة ،ZIPنختار ِ Choose Fileنحدد ىّقع امينف اميضغّط امخاص
باإلضافة ِىن جً امضغط عنٓ :Upload
ٍذا امقسً غير ىعقد امبتة ،قً بكتابة ِصف اإل ضافةِ ،تحديد األيقّنات ِغيرٍا ىن األىّر امرِتينية!
-في حال كان إلضافتك أِ ىنحقك ىّقع شخصيِ ،تريد ربط اميّقع امشخصي باميُ نحق بحيخ ىن
يستعرض اإلضافة ىن امسّق ُت ظَر مُ أن ٍذا اميُ نحق ىقدو ىن ىّقع كذا ِكذا كيا في صّرة رقً
ِٔ ، 4.5.4يعرض مُ إسً ىطّر اإلضافة ذاتَا ،قً فقط بامضغط عنٓ .Add a new site
بعد إتياىك مَذٌ امعينيةِ ،امضغط عنٓ Refresh Listستجد رابط ىّقعك اإلمكترِني أصبح
ىضاف في امقائية ِييكنك ببساطة اختيارٌ كجَة رسيية ىُ قدىة مإلضافة.
ييكن كذمك امقياو بَذٌ امعينية في حال قيت بتطّير إضافة خاصة مشركة ىا ،بامطبع إىا
ستطنب ىنًَ إنشاء حساب ىطّر خاص بًَ ،أِ رفع إضافتًَ عنٓ حسابك امشخصي ىع اإلشارة أن
ىقدو اإلضافة ٍّ ىّقعًَ اإلمكترِني ِ ،بامتامي يجب عنيك إضافة ىّقعًَ في قائيتك ميسيح مك
سّق امكرِو بامتحدث بإسيًَ ِنسب اإلضافة مًٍَِ .ذا يتً ىن خٕل ربط حساب Google
Webmasters Toolsىع اميّقع اإلمكترِني م نشركة أِ امجَة اميامكة منيُ نحق.
-في حال كانت اإلضافة ىدفّعة ِميست ىجانيةٍ ،ذا ٍّ امخيار األنسب مذمك:
بامضغط عنٓ ، Change Pricingييكنك تحديد تسعيرة ىُ نحقك أِ إضافتك كيا ٍّ ىّضح بامصّرة امتامية:
-في حال كانت اإلضافة تطنب تسجيه دخّل اميُ ستخدىين ىن حساباتًَ عنٓ جّجه ،فيجب عنيك
أن تتأكد ىن تفعيه ٍذا امخيار:
ٍذا امخيار سيجبر أي ىُ ستخدو قبه تحييه إضافتك ع نٓ اميتصفح ،يجبرًٍ عنٓ تسجيه امدخّل
أِٔ ً عبر حساب جّجه ميتيكنّا ىن تحييه إضافتك.
ٍ -ه سبق مك ِزرت ىّقعاً إمكترِنيا ىاِ ،عرض عنيك تحييه إضافة أِ ىُ نحق خاص بَذا اميّقع عبر
زر ىا؟ امضغط عنٓ ٍذا امزر من ينقنب إمٓ صفحة اإلضافة داخه امسّق ،به امضغط عنٓ
امضغط عنٓ ٍ
ّ
متركب اإلضافة ىباشرة عنٓ اميتصفح ِأنت داخه اميّقع حتٓ! سيظَر صندِق تحييه ىباشر
امزر ُ
صّرة رقً 4.5.8ىثال متحييه اإلضافات ىن ىّاقعَا امرسيية دِن امتّجُ مصفحة اإلضافة في امسّق
بتفعيه ٍذا امخيار ،أنت ُتشير أن اإلضافة ىن امييكن تحيينَا عبر امضغط عنٓ زر ىا ،مكن ٍه ٍذا كه
شيء؟ أنت تحتاج إلضافة بعض األكّاد امبرىجية ىن جَة ىّقعك امشخصي حتٓ يتعرف اميتصفح
عنٓ اإلضافةٍِ ،ذا اميصدر سيشرح مك بامتفصيه كيف تقّو ذمك باستخداو ِاجَة جّجه امبرىجية.
-ييكنك كذمك تفعيه ٍِ Google Analyticsي خ دىة ىن جّجه ىجانية كذمك في إحصاء زِّ ار ىّقعك
ِىن أين أتّا ِتفاصيه أخرْ ،ييكنك كذمك تطبيق نفس األىر عنٓ زِّ ار صفحة إضافتك عنٓ امسّق
ىن خٕل امٖ IDعندىا تقّو بإنشاء ىتتبع جديد في خدىة :Google Analytics
كه ىا عنيك امقياو بُ بعد إنشاء اميتتبع امجديد ىن خدىة ِ ٍّ Google Analyticsضع امرقً بعد ،UA-
ِستحصه عنٓ تقارير زِّ ار إضافتك ىن عنٓ سّق جّجه كرِو.
-أخيراً ِميس آخراًٍ ،ه اإلضافة جاٍزة مٕستعيال ىن ق به كافة اميُ ستخدىين ىن حّل امعامً؟ في آخر
ّ
تحدد ذمك: قسً ييكن أن
امخيار امثامث :Privateييكن أن تحدد فئة ىخص صة إلختبار إضافتك ِامتي أشرنا مَا سابقاً في بداية
امدخّل مصفحة اميطّرين ،سيصه فقط دعّة منيُ دخه بريدًٍ اإلمكترِني متجربة اإلضافة ِفقط.
:Publish Changesأي امنشر فّراًِ ،كيا أشرنا سابقاً بامعادة ٔ تأخذ امعينية أكحر ىن ساعتين كحد
أقصٓ ىا مً ُتحر اإلضافة امشك متصبح قابنة منتحييه ِامعرض في امسّق.
:Preview Changesعرض كافة امتعديٕت كيا مّ أن اإلضافة تً قبّمَا ىن طرف جّجه ِتعرض
بامسّق اآلن ،ستراٍا أنت كيا يراٍا اميستخدىّن بعد امنشر عنٓ امسّق.
:Save draft and return to dashboardأي حفظ امتعديٕت كيسّدة ييكن امرجّع مَا ٔحقاً ِٔ تقً
بتطبيق امتعديٕت عنٓ اإلضافة في امسّقِ ،عّدة إمٓ صفحة اميطّرين.
:Discard draftأي ٔ تقّو بحفظ امتعديٕت امتي قيت بَا قبه قنيه.
ّ
ىشفرٍ ،ناك ىصطنح آخر يّازيُ ٍِّ ِ Obfuscatedيعني أن امكّد أن امكّد
ٔ نتحدث عن ّ
غاىضِ ،يّجد امعديد ىن امخدىات اميجانية امتي تجعه ىن امكّد امخاص بك كّد ىيّ ٌّ أِ صعب
قراءتُ تحديداً في أكّاد جافاسكريبت.
ٍذا نيّذج ىن رسامة ستصنك عبر امبريد اإلمكترِني يخبرك عن اسً اإلضافة امتي تيت إزامتَا
ىن امسّقِ ،امجزء اميُ شار إميُ باميستطيه األحير ٍّ امجزء امذي ُتزال بسببُ امعديد ىن اإلضافات
بامسّق .فيا ٍّ امكّد امييّ َّ ٌ أِ امغاىض؟
ٍّ امكّد امذي يصعب قراءتُ أِ تتبع تعنيياتُ ىن ق به ىطّر آخر ،كتغيير أسياء اميتغيرات،
ِامدِالِ ،بعض امخدىات األخرْ تّفر مك ىيزة تغيير أىاكن امنصّص أِ ترىيزٍا ميصعب تعدينَا
كذمك.
كه ىا سبق ٍّ ضد سياسة جّجه في تطّير إضافات اميتصفح! فجّجه تريد أن ترفع
اإلضافة بامشكه امذي قيت أنت بتطّيرٌ ،حتٓ يتسنٓ مًَ ىراجعتَا يدِياً ىن ق به ىطّرين آخرين
ميتأكدِا ىن سٕىتَا ِٔ ُتشكه ضرراً عنٓ اميستخدىين .فاحذر ىن رفع إضافتك منسّق بكّد ىيّّ ٌ
ِاجعنُ دائياً ِاضح ِسَه امقراءة.
ىبرىجّا امّيب تعّّ دِا بامطبع عيه ضغط ألكّادًٍ امبرىجية متظَر كنَا بسطر ِاحد فقطٔ ،
ِجّد ألسطر فارغة ِٔ حتٓ ِجّد تعنيقات ،كيا ٍّ بامصّرة امتامية:
ٍذا جزء ىن ىكتبة jQueryأِ ىا ُيسيٓ بٖ ،Minimized jQueryنرْ أن امكّد كنُ بجانب بعضُ
امبعض ِٔ ىسافات ِغير سَه منقراءة باميطنق! مذمك فّر تحيينك ميكتبة jQueryتتيح مك خياران:
إىا تحييه اميكتبة امكاىنة دِن ضغط أِ نسخة ىضغّطة ٍِ Minimizedي امنسخة امتي نقّو
باستخداىَا بامغامب ألنَا تّفر ىساحة منينف ِىنُ ىحافظة عنٓ امٖ Bandwidthامخاص بيّقعنا
اإلمكترِني.
ٍذا أيضاً ىخامف مسياسة جّجه ،عنٓ امكّد أن يكّن كيا ٍّ ِاضح ِسَه ،حتٓ ىع ِجّد
ىكاتب ىشَّرة ِىعرِفة كٖ jQueryىحٕ ً فيجب أن ترفقَا في ىنحقاتك أِ إضافاتك بشكنَا األصني
ِامكاىه ِميس امشكه اميضغّطِ...إٔ ستعرّ ض إضافتك مإلزامة ىن امسّق.
ٔ تقنق ىن ناحية حجً اإلضافة في حال فعٕ ً استخدىت فيَا ىكتبات خارجية ،سي صبح حجً
إضافتك بامييجا بايت فعٕ ً مّ استخدىت ىكتبات غير ىضغّطة ،مكن ٔ تقنق! فكيا قننا أن امصيغة
امنَائية مإلضافات ٍّ ٍ ،CRXذٌ امصيغة ستضغط امكّد بامشكه امٕزو حتٓ ٔ ُتشكه حجً اإلضافة
عائق منيستخدىين اآلخرين ،كه شيء ىعيّل مُ حساب عنٓ ىا يبدِ.
قد يبدِ ٍذا أىر غريب نّعاً ىا ِمكن حصه ى عي بامفعه ،ىجيه امرسامة امتي ترسنَا منا جّجه
شيء ىا ىخفي ِغير ِاضح بامكّد" ،مّ فعٕ ً كانت إضافتك ِاضحة جداً ِغير ىضغّطة كيا
ِ ٍّ "
أسنفنا بامنقطتين امسابقتين ِِصنك إشعار بإزامة إضافتك ىن امسّق ،إذاً عنيك امنظر حّل امطنبات
امتي تقّو بَا إضافتك أِ ىنحقك امخاص ىع امّاجَات امبرىجية ِامخدىات األخرْ .يجب أن يكّن ىا
ُيرسه ِىا ُيستقبه ِاضح جداً حتٓ يتسنٓ ميراجعي إضافتك ىن جّجه ىعرفة ذمك.
تّض حُ جّجه فعٕ ً في سياسة اميحتّْ ٍِّ ،ناتج عن ىحصنة تجارب عاو
ّ ىا سبق ذكرٌ ،مً
كاىه ىن تطّير اإلضافات ِاميُ نحقات مي ِمعيٕئي .مكن جّجه تذكر في سياسة اميحتّْ امخاص
باإلضافات بأن ٔ تشيه ىحٕ ً اميحتّْ اإلباحي ،اميحتّْ امذي ينتَك حقّق ىنكية ىا ،أِ ىُ نحقاتك غير
قانّنيةِ .غير ٍا امعديد ىن األىّر امتي يجب أن تّافق سياسة جّجه في امنشر كيا ٍّ ىذكّر ىن
ٍذا اميصدر.
مذمك عزيزي اميطّر /ة ،إذا قّبنت إضافتك منيرة األِمٓ عنٓ امسّق فٕ تفرح كحيراً ،قد يتً
إسقاطَا فييا بعد إذا ُِ جدت أنَا ىحيرة منشك أِ غير ِاضحة كيا أسنفنا بامسابق ،فٖ بنينة ِضحاٍا تً
إسقاط آٔف اميُ نحقا ت ىن امسّق ِبعضًَ مً يتً إشعار ىطّريًَ حتٓ! اميّو جّجه أصبحت أكحر
صراىة في قبّمَا منيُ نحقات ميستضيفَا امسّق امخاص بًَ ِيحق اميستخدىين بيا ُيقدىُ امسّق مًَ.
ّ
تّضح فيَا أسباب إزامة اإلضافة ،مّ مديك استفسار ييكنك امرد األصه ،جّجه ترسه رسامة
عنٓ امرسامة ذاتَا ِستحصه عنٓ رد قد يكّن ىتأخر ( ىن يّىين إمٓ جٕجة أياو) بامغامبِ ،ييكن أن
تطرح ىشكنتك في ىجيّعات جّجه منيساعدة.
سي صنك إشعار بذمك بامتأكيد ،مكن عند دخّمك مصفحة اميطّرين ،ستجد حامة كه إضافة خاصة بك:
كيا أشرت سابقاً ،ييكنك امرد عنٓ رسامة إشعار اإلزامة امذي ِصنك بامبريد ا إلمكترِني ،مكن ىع
تزايد شكاِي اميطّرين حّل امدعً امفني امسيء في فترة ىن امفترات ،فقد قاىت جّجه بتّفير
صفحة خاصة منيطّرين بإرسال ىشكٕتًَ امتي يّا جٍَّا حّل ىُ نحقاتًَ ،شكه امنيّذج:
صّرة رقً 4.6.4تّضح نيّذج أتصال ىع فريق امدعً امفني مسّق كرِو
ّ
اميعرف ىن خٕل امرابط امخاص باإلضافة عنٓ امسّق صّرة رقً 4.6.5تّضح امحصّل عنٓ
ييكن كذمك امحصّل عنٓ IDىن مّحة امتحكً امخاصة باميطّرين ،عبر امضغط عنٓ عرض اميزيد ىن
اميعنّىات حّل أي إضافة ىن اإلضافات اميعرِضة أىاىك:
ّ
اميعرف ألي إضافة ىن صفحة اميطّرين صّرة رقً 4.6.6تضّح آمية امحصّل عنٓ
ّ
اميعرف امفريد إلضافتك في نيّذج امتّاصه ىع امدعً امفني امخاص بسّق بكرِو ّ
تّضح أين تضح صّرة رقً 4.6.7
أخيراً ِميس آخراً ،ييكن ِضع صّرة منرسامة امتي ِصنتك ىن امدعً امفني ىحًٕ ،أِ إرسال
امصيغة امنَائية مإلضافة CRXبامطريقة امتي تطرقنا مَا سابقاً .بعد ذمك امضغط عنٓ Submitإلرسال
رداً إيجابياً دائياً.
امنيّذج ِانتظر امردِ...تينياتي بأن يكّن ّ
مكنِ ،كيا تجري امعادة في أي سّق إمكترِني يسيح مك بعرض ىنتجاتك إىا بشكه ىجاني أِ
ىدفّع ،سنتطرق في امقسً األخير ىن ٍذا امكتاب اإلمكترِني حّل األساميب امقانّنية ِاميتاحة منربح
ىن إضافاتك ِىُ نحقاتك.
تّفر جّجه 4خيارات منحصّل عنٓ امعائد اميادي ىن اإلضافات ىُ نخصة في ٍذٌ امصّرة:
ُ
ِامينحقات صّرة رقً 5.1تّضح امخ يارات اميتاحة منكسب اميادي ىن اإلضافات
ِ :One-time Payment -تعني امدفع ميرة ِاحدة ،يشتري اميُ ستخدو اإلضافة امخاصة بك ِفقط.
:Custom -تحديد نظاو خاص بك بعيداً عن ِاجَة جّجه امبرىجية أِ امتعاىه ىع سّق جّجه،
كإنشاء ىتجرك اإلمكترِني.
بامضغط عنٓ زر Change Pricingنبدأ بت حدي د اآلمية بشكه ىخصص ٍِّ ،ىا أشرنا إميُ في ٍذٌ امصّرة:
جّجه ِىن خٕل امّاجَة امبرىجية كذمك تساعدنا في بناء إضافات أِ ىُ نحقات ِعيه نظاو
شراء أِ حتٓ اشتراك شَري أِ سنّي منيُ نحق ،ىن خٕل تحديد ِسينة امدفع امتي يّفرٍا Chrome
ّ
ىّضح في امصّرة امتامية: Web Storeكيا ٍّ
مذمك ٔ ،عنيك أن تقنق كحيراً ىن ٍذٌ األىّر اميامية ِٔ ،داعي متّفير استضافة خاصة مذمك،
مكن بامطبع ٍناك عدة قيّد ِىن أٍيَا امدِل اميسيّح بَا مبيع اميُ نحقات.
صّرة رقً 5.1.2تحدد امدِل اميدعّىة امتي تستطيع بيع ُىنحقاتك ِامدِل امتي تستطيع شراء ُ
امينحقات
يّضح ٍذا اميصدر امدِل اميدعّىة ٔستخداو ِاجَة برىجية جّجه في امبيع ِامشراء ىن
امسّق ،حتٓ تستطيع بيع ىُ نحقاتك يجب أن تكّن ضين امدِل اميّجّدة داخه اميُ ستطيه األحير ،أىا
امدِل امتي تستطيع امشراء فَي امدِل اميّجّدة داخه اميُ ستطيه األحير باإلضافة مإلىارات امعربية
اميتحدة ،اميينكة امعربية امسعّدية ،اميغرب ،ىصرِ ،أِكرانياِ...سيتً دعً بعض امدِل األخرْ قريباً.
نستطيع أن نستنتج بأن امعامً امعربي ٔ يستطيع استخداو ِسائه امبيع امذي يّفرٌ سّق كرِو،
مكن يستطيع امعديد ىن اميُ ستخدىين ىن بعض امدِل امعربية امشراء ىن داخه امسّق.
إذا كنت تسكن بإحدْ امدِل اميُ تاحة مبيع اميُ نحقات ،إذاً إٍٔ ً بك ىع ِاجَة كرِو امبرىجية
ِامتعاىه ىع امدفعات ِتأكيد أشتراكات ِىا إمٓ آخرٌِ ،يجدر اإلشارة أن جّجه ستقتطع %5ىيا
تبيعُ ىن ىُ نحقات كّنَا ِفرّ ت مك امبيئة اميناسبة ِامّاجَة امبرىجية اميناسبة منتعاىه ىع نظاو امدفع
امخاص بًَ.
أنت مست ىُ قيداً يا صديق ي باستخداو نظاو امبيع ِأشتراك امذي تقدىُ جّجه مك ،مكن بامطبع
سيسَه عنيك امكحير ِامكحير .مّ كنت تينك ىتجرك اإلمكترِني امخاص بك مبيع ىُ نحقاتك ،بامطبع
ّ
جّجه تسيح بذمك! مكن عنيك بناء ِاجَتك امبرىجية منتأكد ىن عينيات امشراء ،أشتراك امشَري أِ
امسنّي ٍِّ ،ىكنف ِقتاً ِجَداً مك.
ىحًٕ ،أحد امعيٕء قاو ببناء ىتجرٌ اإلمكترِني مبيع ىُ نحقاتُِ ،كانت ِسينة امدفع اميتاحة ىن
اميُ ستخدىين ٍّ بي بال .يّجد امعديد ىن ُنظً إدارة اميحتّْ كِّردبريس ِامعديد ىن اميُ نحقات
متحّيه ىّقعك اإلمكترِني ميتجر إمكترِني ِميس ىجرد ىحتّْ! امبدائه ىّجّدة ِعديدة.
ىن امييكن امقياو بعينيات بيع داخه اإلضافة أِ اميُ نحق ٍِّ ىا ُيسيٓ ٍِّ ،In-App Payments
ىصطنح نسيع بُ كحيراً في تطبيقات امَّاتف امذكية ِاألجَزة امنّحية ،حيخ يّفر ٍذا امتطبيق عنٓ
ّ
ِىعدات منشخصية امتي سبيه اميحال شراء أدِات ِأنت داخه امتطبيق ،أِ معبة ىا ِتريد شراء أسنحة
تنعب بَا.
جّجه تّفر ذمك أيضاً ىن خٕل ِاجَتَا امبر ىجيةٍِ ،نا كافة امتفاصيه امبرىجية منقياو بذمك.
بامطبع ٍذا يشيه امقيّد امتي تحدجنا فيَا بخصّص قيّد امدِل اميتاحة ٔستخداو امبيع ِامشراء
ِىنصة جّجه مذمك.
-أجناء دخّمك مصفحة اإلضافة ىن صفحة اميطّرين ،اذٍب امٓ خيار :In-app Products
-قً بامضغط عنٓ ِ Add new productييكن إضافة أكحر ىن ىنتج مبيعُ ِأنت داخه اإلضافة ذاتَا.
صّرة رقً 5.2.2إلدخال بيانات امينتج امذي نّد بيعُ داخه اإلضافة
ِييكن تحديد كذمك أن ٍذا امينتج ُيدفع ميرة ِاحدة أِ بنظاو أشتراك (امشَري أِ امسنّي).
عند زيارة اميُ ستخدو مصفحة إضافتك عنٓ سّق كرِو ،يستطيع أن يٕحظ عبارة
كيا تجري امعادةُ ٔ ،ي حب اميُ ستخدىين امدفع مقاء اميُ نحقات أِ حتٓ تطبيقات امَّاتف امذكية
في امعديد ىن األحيان ،مذمك ينج ٓء اميطّرِن ٔستخداو ِسائه أخرْ منربح ىقابه جَدًٍ في
تطّير خدىات معيّو اميُ ستخدىين.
ينج ٓء امعديد متطبيق نظاو إعٕنات ِقد يتجُ امعديد ىن اميطّرين ٔستخداو خدىة جّجه
مإلعٕنات Google AdSenseفي ىّاقعًَ اإلمكترِنية ،مكنٍ ...ه يصنح ذمك في ىُ نحقات جّجه؟
قد ٔ يرِق ذمك مك عزيزي اميطّّ رِ ،أعتذر منفسي ِمك أيضاً بأن ٍذٌ امّسينة غير ىُ تاحة
باميُ طنق ِق د تعرّ ضك محظر حسابك مّ حاِمت اإلمتفاف حّل اميّضّع!
فطبقاً مسياسة أستخداو امخاصة في تطّير إضافات اميُ تصفح ِكذمك سياسة أستخداو في
خدىة Google AdSenseفٕ ييكننا استخداىَا في ىُ نحقاتنا ،به ِامّاجَة امبرىجية امخاصة بيتصفح
كرِو ٔ تدعً ذمك! ٍّ ميس ىجرد نفس امكّد امذي نقّو بّضعُ في ىّاقعنا اإلمكترِنية ييكن ِضعُ
كذمك في ىُ نحقاتنا!
صّرة رقً 5.3.1تّضح عدو إىكانية استخداو خدىة إعٕنات جّجه في إضافات ىتصفح كرِو
مكن بامطبعٍ ،ناك امع ديد ىن امخدىات األخرْ أِ ىا ُتسيٓ بأطراف جامحة تّفر ِاجَة برىجية
أي
مدي ىصادر ىّجّقة حّل األىر كّني مً أتعاىه ىع ٍ
ّ أخرْ معرض إعٕناتًَ داخه ىُ نحقاتك ٔ .يّجد
ىن ٍذٌ امخدىات ،فتجربتَا يقع عنٓ عاتقك أنت.
حسناً ،يّجد امعديد ىن أساميب ام ربح األخرْ ،كبيع ىنكية إضافتك مشركة ىا ٍِّ ىا تسيح بُ
جّجه ،أِ امبدء بتطّير إضافات أخرْ معيٕئك بيقابه ىادي ،أِ اإلشراف عنٓ تطّير ىُ نحقات أخرْ.
ىن امييكن كذمك عيه نظاو إعٕنات خاص بك يسيح ميّاقع أخرْ بنشر رِابط أِ ىّاضيع
داخه إضافتك امتي قيت بتطّيرٍا ،ىع ا ألخذ بعين أعتبار كافة امشرِط ِاميعايير امتي ّ
قدىتَا
جّجه مك في سياسة أستخداو.
ىتص فح كرِو ميا يقدىُ ىن سَّمة في امتّجيق ِسَّمة في امتعاىه ىع امّاجَة امبرىجية ميتصفح
كرِو ِامتطّير امدائً عنيَا ٍِ ،ناك ىن يبدع في ربط امخدىات بين إضافات ىتصفح كرِو ىع امَّاتف
امذكية ٍِّ أىر ىيكن ِميس بيستحيه ،فنحن نتحدث عن تقنيات ِيب ِييكن استخداىَا داخه
ىُ ن حقاتنا.
امعني امقدير أن أكّن قد ُِ فقت في ٍذا امكتاب اإلمكترِني بإصدارٌ األِلِ ،سأسعٓ
ّ أسأل هللا
متطّيرٌ إن ّ
جد أي جديد ميحتّي ىا تّفرّ ٌ جّجه في إطار تطّير ىُ نحقات ِإضافات ىتصفح كرِو،
ِمّامدي ِسائر اميُ سنيين ىن بقاع األرض.
ّ ِٔ تنسّني ىن صامح دعاكً مي
امحقّق
-تعّد ىنكية ٍذا امكتاب اإلمكترِني ميؤمفُ " ىحيد ىفيد امبنا" ِكافة امحقّق ىحفّظة مُ ٔ ،يحق مك
نشر امكتاب دِن أخذ إذن ىن ىؤمفُ.
-حقّق نقه اميحتّْ امتابع منيصادر امخارجية اميّجّدة في امكتاب اإلمكترِني فَي تابعة مكه ىصدر
عنٓ حدة.