اگر پاسخی برای سؤال خود در اینجا پیدا نکردید، سؤالات متداول فروشگاه وب Chrome ، برچسب [google-chrome-extension] در Stack Overflow ، گروه chromium-extensions یا راهنمای فروشگاه را امتحان کنید.
ژنرال
افزونه های گوگل کروم چیست؟
برنامههای افزودنی Google Chrome برنامههایی هستند که در مرورگر کروم اجرا میشوند و عملکردهای اضافی، ادغام با وبسایتها یا خدمات شخص ثالث و تجربههای مرور سفارشیشده را ارائه میکنند.
چگونه می توانم Chrome را برای توسعه برنامه افزودنی راه اندازی کنم؟
تا زمانی که از نسخهای از کروم استفاده میکنید که از برنامههای افزودنی پشتیبانی میکند، همه چیزهایی را که برای شروع نوشتن یک افزونه نیاز دارید، در اختیار دارید. می توانید با روشن کردن حالت برنامه نویس شروع کنید.
روی نماد منوی کروم کلیک کنید و از منوی ابزارها Extensions را انتخاب کنید. مطمئن شوید که چک باکس «حالت برنامهنویس» در گوشه بالا سمت راست علامت زده شده است. اکنون میتوانید برنامههای افزودنی را مجدداً بارگیری کنید، فهرستی از فایلهای بستهنشده را بهگونهای بارگیری کنید که گویی یک پسوند بستهبندی شده است، و موارد دیگر. برای یک آموزش کامل، به شروع به کار مراجعه کنید.
چه فناوری هایی برای نوشتن برنامه های افزودنی برای کروم استفاده می شود؟
برنامههای افزودنی با استفاده از فناوریهای وب استانداردی که توسعهدهندگان برای ایجاد وبسایتها استفاده میکنند، نوشته میشوند. HTML به عنوان زبان نشانه گذاری محتوا، CSS برای استایل سازی و جاوا اسکریپت برای اسکریپت استفاده می شود. از آنجایی که Chrome از HTML5 و CSS3 پشتیبانی میکند، توسعهدهندگان میتوانند از جدیدترین فناوریهای وب باز مانند بوم و انیمیشنهای CSS در برنامههای افزودنی خود استفاده کنند. برنامههای افزودنی همچنین به چندین API جاوا اسکریپت دسترسی دارند که به انجام عملکردهایی مانند رمزگذاری JSON و تعامل با مرورگر کمک میکنند.
آیا هر بار که مرورگر بارگیری می شود، برنامه های افزودنی از وب واکشی می شوند؟
برنامههای افزودنی پس از نصب توسط مرورگر کروم دانلود میشوند و متعاقباً به منظور افزایش سرعت عملکرد، از دیسک محلی خارج میشوند. با این حال، اگر نسخه جدیدی از برنامه افزودنی به صورت آنلاین ارسال شود، به طور خودکار در پسزمینه برای کاربرانی که برنامه افزودنی را نصب کردهاند دانلود میشود. برنامههای افزودنی همچنین ممکن است در هر زمانی برای تعامل با یک سرویس وب یا بیرون کشیدن محتوای جدید از وب درخواست محتوای راه دور ارائه دهند.
چگونه تشخیص دهم که کدام نسخه از 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 Frame)، linux
، mac
، win
و cros
(Google ChromeOS). کانال های لیست شده عبارتند از canary
, dev
, beta
و stable
. دو عدد چهار بخشی بعد از کانال نشان دهنده نسخه فعلی و قبلی Chrome است که در آن ترکیب پلتفرم-کانال مستقر شده است. بقیه اطلاعات فراداده مربوط به زمانی است که انتشار برای اولین بار منتشر شد، و همچنین اعداد ویرایش مرتبط با هر ساخت.
قابلیت ها
آیا برنامههای افزودنی میتوانند درخواستهای Ajax بین دامنهای را ارائه دهند؟
بله. برنامههای افزودنی میتوانند درخواستهای بین دامنهای ایجاد کنند. برای اطلاعات بیشتر به این صفحه مراجعه کنید.
آیا برنامه های افزودنی می توانند از خدمات وب شخص ثالث استفاده کنند؟
بله. برنامههای افزودنی میتوانند درخواستهای Ajax بین دامنهای ایجاد کنند، بنابراین میتوانند مستقیماً APIهای راه دور را فراخوانی کنند. API هایی که داده ها را با فرمت JSON ارائه می دهند بسیار آسان برای استفاده هستند.
آیا برنامه های افزودنی می توانند داده های JSON را رمزگذاری/رمزگشایی کنند؟
بله، از آنجایی که V8 (موتور جاوا اسکریپت کروم) از JSON.stringify و JSON.parse به صورت بومی پشتیبانی می کند، می توانید از این توابع در برنامه های افزودنی خود همانطور که در اینجا توضیح داده شده است استفاده کنید، بدون اینکه هیچ گونه کتابخانه JSON اضافی در کد خود وارد کنید.
آیا افزونه ها می توانند داده ها را به صورت محلی ذخیره کنند؟
بله، برنامههای افزودنی میتوانند از localStorage برای ذخیره دائمی دادههای رشته استفاده کنند. با استفاده از توابع داخلی JSON کروم، می توانید ساختارهای داده پیچیده را در محلی ذخیره کنید. برای برنامه های افزودنی که نیاز به اجرای پرس و جوهای SQL روی داده های ذخیره شده خود دارند، Chrome پایگاه های داده SQL سمت سرویس گیرنده را پیاده سازی می کند که ممکن است از آنها نیز استفاده شود.
آیا افزونه ها می توانند از OAuth استفاده کنند؟
بله، افزونههایی وجود دارند که از OAuth برای دسترسی به APIهای داده از راه دور استفاده میکنند. اکثر توسعه دهندگان استفاده از کتابخانه OAuth جاوا اسکریپت را برای ساده کردن فرآیند امضای درخواست های OAuth راحت می دانند.
آیا برنامههای افزودنی میتوانند رابط کاربری خارج از صفحه وب رندر شده ایجاد کنند؟
بله، برنامه افزودنی شما ممکن است دکمه هایی را به رابط کاربری مرورگر کروم اضافه کند. برای اطلاعات بیشتر به اقدامات مرورگر و عملکردهای صفحه مراجعه کنید.
یک برنامه افزودنی همچنین ممکن است اعلانهای بازشو ایجاد کند که خارج از پنجره مرورگر وجود دارد. برای جزئیات بیشتر به مستندات اعلانهای دسکتاپ مراجعه کنید.
آیا برنامههای افزودنی میتوانند به کلیکهای روی برگههای کروم و دکمههای پیمایش گوش دهند؟
خیر. برنامه های افزودنی محدود به گوش دادن به رویدادهای شرح داده شده در اسناد API هستند.
آیا دو افزونه می توانند با یکدیگر ارتباط برقرار کنند؟
بله، برنامههای افزودنی ممکن است پیامهایی را به برنامههای افزودنی دیگر ارسال کنند. برای اطلاعات بیشتر به اسناد ارسال پیام مراجعه کنید.
آیا افزونه ها می توانند از Google Analytics استفاده کنند؟
بله، از آنجایی که افزونهها درست مانند وبسایتها ساخته میشوند، میتوانند از Google Analytics برای ردیابی استفاده استفاده کنند. با این حال، باید کد ردیابی را تغییر دهید تا نسخه HTTPS کتابخانه Google Analytics را بکشید. برای اطلاعات بیشتر در مورد انجام این کار به این آموزش مراجعه کنید.
آیا برنامه های افزودنی می توانند URL های chrome:// را تغییر دهند؟
خیر. APIهای برنامه افزودنی برای به حداقل رساندن مشکلات مربوط به سازگاری با عقب طراحی شده اند که ممکن است در هنگام فشار دادن نسخه های جدید مرورگر ایجاد شود. اجازه دادن به اسکریپت های محتوا در URL های chrome://
به این معنی است که توسعه دهندگان شروع به تکیه بر DOM، CSS و جاوا اسکریپت این صفحات برای ثابت ماندن خواهند کرد. در بهترین حالت، این صفحات به همان سرعتی که در حال حاضر به روز می شوند، به روز نمی شوند. در بدترین حالت، ممکن است به این معنی باشد که بهروزرسانی یکی از این صفحات میتواند باعث خرابی یک برنامه افزودنی شود و باعث شود که بخشهای کلیدی مرورگر برای کاربران آن برنامه افزودنی کار نکند.
دلیل اینکه جایگزینی محتوای میزبانی شده در این URL ها به طور کامل مجاز است این است که توسعه دهنده برنامه افزودنی را مجبور می کند تا تمام عملکردهای مورد نظر خود را بدون وابستگی به اجرای داخلی مرورگر اجرا کند تا ثابت بماند.
آیا برنامههای افزودنی میتوانند پنجرههای عملیات مرورگر/صفحه را بدون تعامل کاربر باز کنند؟
خیر، پنجرههای بازشو تنها در صورتی باز میشوند که کاربر روی صفحه یا عملکرد مرورگر مربوطه کلیک کند. یک برنامه افزودنی نمی تواند پنجره بازشو خود را به صورت برنامه ای باز کند.
آیا برنامههای افزودنی میتوانند پنجرههای بازشو را بعد از کلیک کردن کاربر از آنها باز نگه دارند؟
خیر، هنگامی که کاربر بر روی بخشی از مرورگر خارج از پنجره بازشو تمرکز می کند، پنجره های بازشو به طور خودکار بسته می شوند. هیچ راهی برای باز نگه داشتن پنجره بازشو بعد از کلیک کاربر وجود ندارد.
آیا برنامههای افزودنی میتوانند هنگام نصب/حذف آنها مطلع شوند؟
میتوانید به رویداد runtime.onInstalled گوش دهید تا هنگام نصب یا بهروزرسانی برنامه افزودنی، یا زمانی که خود Chrome بهروزرسانی میشود، مطلع شوید. هیچ رویداد مربوطه برای زمانی که برنامه افزودنی شما حذف نصب شده است وجود ندارد.
توسعه
چگونه یک UI برای برنامه افزودنی خود بسازم؟
برنامههای افزودنی از HTML و CSS برای تعریف رابط کاربری خود استفاده میکنند، بنابراین میتوانید از کنترلهای فرم استاندارد برای ساخت رابط کاربری خود استفاده کنید یا به رابط کاربری با CSS سبک دهید، مانند یک صفحه وب. علاوه بر این، برنامههای افزودنی میتوانند برخی از عناصر رابط کاربری محدود را به خود کروم اضافه کنند.
چه مقدار داده می توانم در localStorage ذخیره کنم؟
برنامه های افزودنی می توانند تا 5 مگابایت داده را در محلی ذخیره کنند.
چگونه می توانم یک منوی گزینه ها برای برنامه خود ایجاد کنم؟
میتوانید با ایجاد یک صفحه گزینهها ، که یک صفحه HTML ساده است، به کاربران اجازه دهید گزینههایی را برای برنامه افزودنی شما تنظیم کنند، که وقتی کاربر روی دکمه «گزینهها» برای برنامه افزودنی شما کلیک میکند، بارگیری میشود. این صفحه میتواند تنظیمات را در localStorage بخواند و بنویسد، یا حتی گزینهها را به یک سرور وب ارسال کند تا بتوان آنها را در مرورگرها حفظ کرد.
چه ابزارهای اشکال زدایی در دسترس توسعه دهندگان برنامه های افزودنی است؟
از ابزارهای توسعهدهنده داخلی کروم میتوان برای اشکالزدایی برنامههای افزودنی و همچنین صفحات وب استفاده کرد. برای اطلاعات بیشتر به این آموزش در مورد اشکال زدایی افزونه ها مراجعه کنید.
چرا موارد منطبق با حروف عام برای دامنه های سطح بالا (TLD) کار نمی کنند؟
به دلیل پیچیدگی محدود http://google.*/*
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 هایی را که می خواهید برنامه افزودنی خود را روی آنها اجرا کنید، برشمارید.
چرا وقتی برنامه افزودنی من نصب یا حذف می شود، API مدیریت رویدادها را فعال نمی کند؟
API مدیریت برای کمک به ایجاد پسوندهای جایگزین صفحه برگه جدید در نظر گرفته شده بود. در نظر گرفته نشده بود که رویدادهای نصب/حذف نصب را برای برنامه افزودنی فعلی فعال کند.
چگونه یک برنامه افزودنی می تواند تشخیص دهد که برای اولین بار اجرا می شود یا خیر؟
می توانید به رویداد runtime.onInstalled گوش دهید. این مدخل سؤالات متداول را ببینید.
ویژگی ها و اشکالات
فکر کنم یه باگ پیدا کردم! چگونه مطمئن شوم که درست می شود؟
هنگام توسعه یک برنامه افزودنی، ممکن است رفتاری پیدا کنید که با اسناد افزونه مطابقت نداشته باشد و ممکن است نتیجه یک اشکال در Chrome باشد. بهترین کار این است که مطمئن شوید یک گزارش مشکل مناسب ثبت شده است و تیم Chromium اطلاعات کافی برای بازتولید این رفتار را دارد.
مراحلی که باید برای اطمینان از این موضوع دنبال کنید عبارتند از:
- با حداقل برنامه افزودنی آزمایشی که مشکلی را که میخواهید گزارش دهید را نشان دهد. این برنامه افزودنی باید تا حد امکان کد کمتری برای نشان دادن اشکال داشته باشد—به طور کلی این باید 100 خط کد یا کمتر باشد. بسیاری از اوقات، توسعهدهندگان متوجه میشوند که نمیتوانند مشکلات خود را از این طریق بازتولید کنند، که نشاندهنده خوبی است که این اشکال در کد خودشان است.
- ردیاب مشکل را در http://crbug.com جستجو کنید تا ببینید آیا کسی مشکل مشابهی را گزارش کرده است یا خیر. اکثر مسائل مربوط به برنامههای افزودنی در قسمت component=Platform>Extensions ثبت میشوند، بنابراین برای جستجوی یک اشکال افزونه مربوط به تابع chrome.tabs.executeScript (به عنوان مثال)، "
component=Platform>Extensions Type=Bug chrome.tabs.executeScript
"، که این لیست از نتایج را به شما می دهد. - اگر اشکالی پیدا کردید که مشکل شما را توضیح میدهد، روی نماد ستاره کلیک کنید تا در صورت دریافت بهروزرسانی از اشکال مطلع شوید. به اشکال پاسخ ندهید و بگویید "من هم" یا نپرسید "چه زمانی این مشکل برطرف می شود؟" ; چنین به روز رسانی هایی می تواند باعث ارسال صدها ایمیل شود. فقط در صورتی که اطلاعاتی دارید (مانند یک مورد آزمایشی بهتر یا راه حل پیشنهادی) که احتمالاً مفید است، نظر اضافه کنید.
- اگر اشکال مناسبی برای ستارهگذاری پیدا نکردید، یک گزارش مشکل جدید در http://crbug.com/new ارسال کنید. هنگام پر کردن این فرم تا حد امکان صریح باشید: عنوان توصیفی را انتخاب کنید، مراحل بازتولید اشکال را توضیح دهید و رفتار مورد انتظار و واقعی را شرح دهید. نمونه آزمایشی خود را به گزارش پیوست کنید و در صورت لزوم اسکرین شات اضافه کنید. هرچه گزارش شما بازتولید مشکل شما را برای دیگران آسانتر کند، احتمال بیشتری وجود دارد که اشکال شما به سرعت برطرف شود.
- منتظر بمانید تا باگ به روز شود. اکثر اشکالات جدید در عرض یک هفته تریاژ می شوند، اگرچه گاهی اوقات ممکن است برای به روز رسانی بیشتر طول بکشد. برای اینکه بپرسید چه زمانی مشکل برطرف می شود، به اشکال پاسخ ندهید. اگر اشکال شما پس از دو هفته اصلاح نشد، لطفاً یک پیام به گروه بحث ارسال کنید و یک پیوند به اشکال خود را بازگردانید.
- اگر در ابتدا اشکال خود را در گروه بحث گزارش کردهاید و به این مدخل سؤالات متداول هدایت شدهاید، با پیوندی به اشکالی که ستارهدار یا گزارش کردهاید، به موضوع اصلی خود پاسخ دهید. این کار باعث میشود دیگرانی که مشکل مشابه را دارند پیدا کردن باگ صحیح را آسانتر کند.
من یک درخواست ویژگی دارم! چگونه می توانم آن را گزارش کنم؟
اگر ویژگی را شناسایی کردید (به خصوص اگر مربوط به یک API آزمایشی باشد) که می تواند برای بهبود تجربه توسعه برنامه افزودنی اضافه شود، مطمئن شوید که درخواست مناسب در ردیاب مشکل ثبت شده است.
مراحلی که برای اطمینان از این امر باید دنبال کنید عبارتند از:
- ردیاب مشکل را در http://crbug.com جستجو کنید تا ببینید آیا شخصی ویژگی مشابهی را درخواست کرده است یا خیر. اکثر درخواستهای مربوط به برنامههای افزودنی در قسمت component=Platform>Extensions ثبت میشوند، بنابراین برای جستجوی یک درخواست ویژگی افزونه مربوط به میانبرهای صفحهکلید (به عنوان مثال)، "
component=Platform>Extensions Type=Feature shortcuts
" را جستجو کنید، که این را به شما میدهد. لیست نتایج . - اگر بلیتی پیدا کردید که با درخواست شما مطابقت دارد، روی نماد ستاره کلیک کنید تا وقتی اشکال بهروزرسانی دریافت کرد، مطلع شوید. به این اشکال پاسخ ندهید که بگویید "من هم" یا نپرسید "چه زمانی این کار اجرا می شود؟" ; چنین به روز رسانی هایی می تواند باعث ارسال صدها ایمیل شود.
- اگر بلیت مناسبی برای ستارهدار پیدا نکردید، درخواست جدیدی در http://crbug.com/new ارسال کنید. هنگام پر کردن این فرم تا حد امکان دقیق باشید: یک عنوان توصیفی انتخاب کنید و دقیقاً توضیح دهید که چه ویژگی را می خواهید و چگونه می خواهید از آن استفاده کنید.
- منتظر بمانید تا بلیط به روز شود. اکثر درخواستهای جدید در عرض یک هفته تریاژ میشوند، اگرچه گاهی اوقات ممکن است برای بهروزرسانی بیشتر طول بکشد. به تیکت پاسخ ندهید تا بپرسید چه زمانی ویژگی اضافه خواهد شد. اگر بلیط شما پس از دو هفته تغییر نکرده است، لطفاً یک پیام به گروه بحث ارسال کنید و یک پیوند به درخواست شما ارسال کنید.
- اگر در ابتدا درخواست خود را در گروه بحث گزارش کردهاید و به این ورودی سؤالات متداول هدایت شدهاید، با پیوندی به بلیتی که ستارهدار یا باز کردهاید، به موضوع اصلی خود پاسخ دهید. این کار باعث می شود که دیگران با همان درخواست، بلیط صحیح را پیدا کنند.