שאלות נפוצות

אם לא תמצאו כאן תשובה לשאלה שלכם, עיינו בשאלות הנפוצות בנושא חנות האינטרנט של Chrome, בתג [google-chrome-extension] ב-Stack Overflow, בקבוצת Chromium-extensions או במרכז העזרה של החנות.

כללי

מהם תוספים ל-Google Chrome?

תוספים ל-Google Chrome הם אפליקציות שפועלות בתוך דפדפן Chrome ומספקות פונקציונליות נוספת, שילוב עם אתרים או שירותים של צדדים שלישיים וחוויות גלישה מותאמות אישית.

איך מגדירים את Chrome לצורך פיתוח תוספים?

כל עוד אתם משתמשים בגרסה של Chrome שתומכת בתוספים, כבר יש לכם את כל מה שצריך כדי להתחיל לכתוב תוסף משלכם. כדי להתחיל, אפשר להפעיל את 'מצב פיתוח'.

לוחצים על סמל התפריט של Chrome ובוחרים באפשרות תוספים בתפריט כלים. מוודאים שתיבת הסימון 'מצב פיתוח' בפינה השמאלית העליונה מסומנת. מעכשיו אפשר לטעון מחדש תוספים, לטעון ספרייה לא ארוזה של קבצים כאילו היו תוסף ארוז ועוד. מדריך מלא זמין במאמר תחילת העבודה.

באילו טכנולוגיות נעשה שימוש כדי לכתוב תוספים ל-Chrome?

התוספים נכתבים באמצעות אותן טכנולוגיות אינטרנט סטנדרטיות שבהן משתמשים מפתחים כדי ליצור אתרים. HTML משמש כשפת סימון של תוכן, CSS משמש לעיצוב ו-JavaScript לסקריפטים. מאחר ש-Chrome תומך ב-HTML5 וב-CSS3, מפתחים יכולים להשתמש בטכנולוגיות האינטרנט הפתוחות והעדכניות ביותר, כמו בד קנבס ואנימציות CSS, בתוספים שלהם. לתוספים יש גם גישה למספר ממשקי API של 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 Frame), linux, mac, win ו-cros (Google ChromeOS). הערוצים שמופיעים ברשימה הם canary, dev, beta ו-stable. שני המספרים שמורכבים מארבעת החלקים שאחרי הערוץ מייצגים את הגרסה הנוכחית והגרסאות הקודמות של Chrome שנפרסו בשילוב הזה של פלטפורמה-ערוץ. שאר הפרטים הם מטא-נתונים לגבי המועד שבו הגרסאות האלה נדחפו בפעם הראשונה, וכן מספרי גרסאות קודמות שמשויכות לכל build.

יכולות

האם תוספים יכולים לשלוח בקשות Ajax בדומיינים שונים?

כן. תוספים יכולים לשלוח בקשות בין דומיינים. מידע נוסף זמין בדף הזה.

האם תוספים יכולים להשתמש בשירותי אינטרנט של צד שלישי?

כן. תוספים יכולים לשלוח בקשות Ajax בכמה דומיינים, וכך לקרוא לממשקי API מרוחקים באופן ישיר. קל במיוחד להשתמש בממשקי API שמספקים נתונים בפורמט JSON.

האם תוספים יכולים לקודד/לפענח נתוני JSON?

כן, מכיוון ש-V8 (מנוע ה-JavaScript של Chrome) תומך במקור ב-JSON.stringify וב-JSON.parse, תוכלו להשתמש בפונקציות האלה בתוספים כפי שמתואר כאן, בלי לכלול ספריות JSON נוספות בקוד.

האם תוספים יכולים לאחסן נתונים באופן מקומי?

כן, תוספים יכולים להשתמש ב-localStorage כדי לאחסן נתוני מחרוזת באופן קבוע. באמצעות הפונקציות המובנות של Chrome ב-JSON, אתם יכולים לאחסן מבני נתונים מורכבים ב-localStorage. בתוספים שצריכים להריץ שאילתות SQL על הנתונים השמורים שלהם, Chrome מטמיע מסדי נתונים של SQL בצד הלקוח, שאפשר להשתמש גם בהם.

האם תוספים יכולים להשתמש ב-OAuth?

כן, יש תוספים שמשתמשים ב-OAuth כדי לגשת לממשקי API של נתונים מרחוק. לרוב המפתחים קל להשתמש בספריית OAuth של JavaScript כדי לפשט את תהליך החתימה על בקשות OAuth.

האם תוספים יכולים ליצור ממשק משתמש מחוץ לדף האינטרנט המעובד?

כן, התוסף עשוי להוסיף לחצנים לממשק המשתמש של דפדפן Chrome. למידע נוסף, קראו על פעולות בדפדפן ופעולות בדף.

תוסף עשוי גם ליצור הודעות קופצות, שמוצגות מחוץ לחלון הדפדפן. למידע נוסף, תוכלו לקרוא את המאמר בנושא התראות במחשב.

האם תוספים יכולים להאזין לקליקים על כרטיסיות Chrome ועל לחצני ניווט?

לא. התוספים מוגבלים להאזנה לאירועים המתוארים בתיעוד ה-API.

האם שני תוספים יכולים לתקשר זה עם זה?

כן, תוספים יכולים להעביר הודעות לתוספים אחרים. למידע נוסף, עיינו בתיעוד בנושא העברת הודעות.

האם תוספים יכולים להשתמש ב-Google Analytics?

כן, מאחר שתוספים נוצרים בדיוק כמו אתרים, הם יכולים להשתמש ב-Google Analytics כדי לעקוב אחר השימוש. עם זאת, כדי למשוך גרסת HTTPS של ספריית Google Analytics צריך לשנות את קוד המעקב. למידע נוסף על ביצוע הפעולה הזו, אפשר לעיין במדריך הזה.

האם תוספים יכולים לשנות כתובות URL מסוג chrome:// ?

לא. ממשקי ה-API של התוספים תוכננו למזער בעיות תאימות לאחור שעשויות להתרחש כשלוחצים על גרסאות חדשות של הדפדפן. כשמאפשרים סקריפטים של תוכן בכתובות URL של chrome://, מפתחים יוכלו להתחיל להסתמך על ה-DOM, ה-CSS וה-JavaScript של הדפים האלה כדי להישאר ללא שינוי. במקרה הטוב ביותר, לא ניתן לעדכן את הדפים האלה באותה מהירות שבה הם מתעדכנים כרגע. במקרה הגרוע ביותר, ייתכן שעדכון באחד מהדפים האלה יקטע תוסף מסוים, וכתוצאה מכך חלקים מרכזיים בדפדפן יפסיקו לפעול אצל המשתמשים בתוסף.

החלפה מלאה של התוכן שמתארח בכתובות ה-URL האלה מותרת כי הפעולה הזו מאלצת את מפתח התוספים להטמיע את כל הפונקציונליות הרצויה, מבלי שההטמעה הפנימית של הדפדפן תישאר ללא שינוי.

האם תוספים יכולים לפתוח חלונות קופצים של פעולות בדפדפן או בדף בלי אינטראקציה של המשתמש?

לא, אפשר לפתוח חלונות קופצים רק אם המשתמש לוחץ על הדף המתאים או על הפעולה הרלוונטית בדפדפן. לתוסף מסוים אין אפשרות לפתוח את החלון הקופץ באופן פרוגרמטי.

האם תוספים יכולים להשאיר חלונות קופצים פתוחים אחרי שהמשתמש לוחץ לצאת מהם?

לא, החלונות הקופצים נסגרים אוטומטית כשהמשתמש מתמקד בחלק מסוים של הדפדפן מחוץ לחלון הקופץ. אין דרך להשאיר את החלון הקופץ פתוח לאחר שהמשתמש לחץ ליציאה.

האם אפשר להודיע לתוספים כשהם מותקנים או כשמסירים אותם?

אפשר להאזין לאירוע runtime.onInstalled כדי לקבל הודעה כשהתוסף מותקן או מתעדכן, או כש-Chrome מתעדכן. אין אירוע מתאים למועד הסרת התוסף.

פיתוח

איך אפשר לבנות ממשק משתמש לתוסף שלי?

תוספים משתמשים ב-HTML וב-CSS כדי להגדיר את ממשקי המשתמש שלהם, כך שאתם יכולים להשתמש בפקדי טפסים רגילים כדי לבנות את ממשק המשתמש שלכם, או לסגנן את הממשק באמצעות CSS כמו בדף אינטרנט. בנוסף, תוספים יכולים להוסיף כמה אלמנטים מוגבלים של ממשק המשתמש ל-Chrome עצמו.

כמה נתונים אפשר לאחסן ב-localStorage?

תוספים יכולים לאחסן עד 5MB של נתונים ב-localStorage.

כיצד אוכל ליצור תפריט אפשרויות עבור האפליקציה שלי?

כדי לאפשר למשתמשים להגדיר אפשרויות לתוסף אפשר ליצור דף אפשרויות – דף HTML פשוט שייטען כשהמשתמש ילחץ על הלחצן 'אפשרויות' בתוסף. הדף הזה יכול לקרוא ולכתוב הגדרות ב-localStorage, או אפילו לשלוח אפשרויות לשרת אינטרנט כדי לשמור אותן בכל הדפדפנים.

אילו כלים לניפוי באגים זמינים למפתחי תוספים?

ניתן להשתמש בכלים המובנים למפתחים ב-Chrome כדי לנפות באגים בתוספים ובדפי אינטרנט. למידע נוסף, קראו את המדריך בנושא ניפוי באגים בתוספים.

למה התאמות עם תווים כלליים לחיפוש לא פועלות בדומיינים ברמה עליונה (TLD)?

אי אפשר להשתמש בתבניות התאמה של תווים כלליים לחיפוש כמו http://google.*/* כדי להתאים דומיינים ברמה העליונה (כמו http://google.es ו-http://google.fr), בגלל המורכבות של להגביל בפועל את ההתאמה הזו רק לדומיינים הרצויים.

בדוגמה של http://google.*/*, הדומיינים של Google יותאמו, אבל גם http://google.someotherdomain.com. בנוסף, להרבה אתרים לא כל הדומיינים ברמה העליונה נמצאים בבעלות הדומיין שלהם. לדוגמה, נניח שאתם רוצים להשתמש ב-http://example.*/* כדי להתאים בין http://example.com לבין http://example.es, אבל האתר http://example.net הוא אתר עוין. אם בתוסף יש באג, האתר העוין עלול לתקוף את התוסף כדי לקבל גישה להרשאות המוגדלות של התוסף.

עליך לציין במפורש את הדומיינים ברמה העליונה שבהם ברצונך להפעיל את התוסף.

למה ממשק ה-API לניהול לא מפעיל אירועים כשהתוסף שלי מותקן או כשמסירים אותו?

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. אם מצאתם באג שמתאר את הבעיה שבה נתקלתם, תוכלו ללחוץ על סמל הכוכב כדי לקבל הודעה כשתקבל עדכון. אסור להגיב לבאג ולהגיד "גם אני" או לשאול "When will this befixed?". עדכונים כאלה עלולים לגרום לשליחת מאות הודעות אימייל. הוסיפו תגובה רק אם יש לכם מידע שעשוי להועיל (למשל, מקרה בדיקה טוב יותר או הצעה לתיקון).
  4. אם לא מצאת באג שאפשר לסמן בכוכב, אפשר לדווח על הבעיה החדשה בכתובת http://crbug.com/new. חשוב לכתוב את הטופס בצורה מפורשת ככל האפשר: יש לבחור כותרת תיאורית, להסביר את השלבים לשחזור הבאג ולתאר את ההתנהגות הצפויה ואת ההתנהגות בפועל. מצרפים לדוח את דוגמת הבדיקה, ואם יש צורך, מוסיפים צילומי מסך. ככל שהדוח יאפשר לאחרים לשחזר בקלות את הבעיה, כך גובר הסיכוי שהבאג יתוקן בהקדם.
  5. ממתינים עד שהבאג יעודכן. רוב הבאגים החדשים ממוינים בתוך שבוע, אבל העדכון עשוי להימשך זמן רב יותר. אסור להשיב לבאג בשאלה מתי הבעיה תיפתר. אם הבאג לא יתוקן אחרי שבועיים, פרסמו הודעה בקבוצת הדיון והוסיפו קישור לבאג.
  6. אם במקור דיווחת על הבאג בקבוצת הדיון והופנית לשאלה נפוצה זו, השב לשרשור המקורי שלך וצרף קישור לבאג שסימנת בכוכב או שדיווחת עליו. כך משתמשים אחרים שנתקלים באותה בעיה יוכלו למצוא בקלות את הבאג הנכון.

יש לי בקשה להוספת תכונה! איך אוכל לדווח על כך?

אם אתם מזהים תכונה (במיוחד אם היא קשורה ל-API ניסיוני) שניתן להוסיף כדי לשפר את חוויית הפיתוח של התוסף, חשוב לוודא שנשלחה בקשה מתאימה בכלי למעקב אחר בעיות.

השלבים שעליך לבצע כדי להבטיח את זה הם:

  1. חפשו במאתר הבעיות http://crbug.com אם מישהו ביקש תכונה דומה. רוב הבקשות שקשורות לתוספים מתויקות בקטע component=Platform>תוספות. לכן, כדי לחפש בקשה להוספת תכונה שקשורה למקשי קיצור (לדוגמה), צריך לחפש את "component=Platform>Extensions Type=Feature shortcuts", שיספק את רשימת התוצאות.
  2. אם מצאתם כרטיס שתואם לבקשה שלכם, תוכלו ללחוץ על סמל הכוכב כדי לקבל הודעה כשתקבל עדכון על הבאג. אסור להגיב לבאג ולהגיד "גם אני" או לשאול "מתי זה יוטמע?". עדכונים כאלה עלולים לגרום לשליחת מאות הודעות אימייל.
  3. אם לא מצאת פנייה מתאימה לסימון בכוכב, אפשר להגיש בקשה חדשה בכתובת http://crbug.com/new. השתדלו לפרט ככל האפשר במהלך מילוי הטופס: בחרו כותרת תיאורית והסבירו באיזו תכונה בדיוק אתם רוצים להשתמש, ואיך בכוונתכם להשתמש בה.
  4. ממתינים עד שהכרטיס יתעדכן. רוב הבקשות החדשות מטופלות תוך שבוע, אבל לפעמים נדרש זמן רב יותר עד שהעדכון מתבצע. לא להשיב לכרטיס כדי לשאול מתי התכונה תתווסף. אם הכרטיס לא השתנה לאחר שבועיים, פרסמו הודעה בקבוצת הדיון והוסיפו קישור לבקשה.
  5. אם במקור דיווחת על הבקשה בקבוצת הדיון והופנית לשאלה נפוצה הזו, עליך להשיב לשרשור המקורי שלך ולצרף קישור לכרטיס שסימנת בכוכב או לפתוח אותו. כך משתמשים אחרים שביקשו באותה בקשה יוכלו למצוא בקלות את הכרטיס הנכון.