תוספי Chrome חמודים שלא מאטים את הדפדפן שלכם
לתוספי דפדפן קישוטיים יש מוניטין, ובעיקר בצדק: כבדים, פטפטנים, ומותקנים עם רשימת הרשאות שאף אחד לא קרא. וזה חבל, כי הקטגוריה הזו כיפית באמת וכל אחת מהבעיות שלה ניתנת למניעה.
שלושה דברים ששווה לבדוק
- רשימת ההרשאות. Chrome מציג אותה לפני ההתקנה. storage היא קובץ העדפות ותו לא. לעומת זאת tabs, cookies, history ו-webRequest הן ההרשאות שמאפשרות לתוסף לצפות בגלישה שלכם.
- האם הוא נוגע בפריסת העמוד שלכם. תוסף שמכניס רכיבים לתוך זרימת המסמך, או מודד מיקומי רכיבים בכל אירוע גלילה, יכול לגרום לעמוד חלק לגמגם, לא משנה כמה מעט הוא מצייר.
- לאן הוא שולח בקשות. קישוט עם לשונית רשת עמוסה מבצע עבודה שנייה שלא סיפרו לכם עליה.
למה הפריסה היא זו שנושכת
קריאה של מאפיין פריסה — הגובה של רכיב, המיקום שלו על המסך — מחייבת את הדפדפן לסיים כל עבודת פריסה ממתינה לפני שהוא יכול לענות. עשו את זה בתוך מטפל גלילה, וביקשתם מהדפדפן לעצור ולמדוד שישים פעם בשנייה, בעמוד שהיה באמצע הציור שלו.
זה המנגנון שמאחורי רוב התלונות מהסוג 'התוסף הזה עושה את הגלילה מקוטעת', והוא בלתי נראה עד שמישהו מפרופל אותו. הפתרון לא זוהר: לעולם לא לקרוא פריסה בזמן גלילה, לכתוב רק מאפיין transform, ולתת למרכיב (compositor) לבצע את התזוזה.
איך זה נראה כאן
scrolldog הוא חיית פיקסלים קטנה שרצה לאורך קצה כל עמוד במהירות הגלילה שלכם. הוא גם דוגמה מעשית לבדיקות שלמעלה, כי הוא היה חייב לעבור אותן כדי להיות נסבל לחיות איתו:
- שתי הרשאות בלבד: storage ו-unlimitedStorage. בלי tabs, בלי cookies, בלי history, בלי webRequest.
- הרשאת מארח אחת — api.scroll.dog — משמשת לבדיקת רישיון, ואף פעם לא לגעת בעמוד שאתם נמצאים בו.
- החיה גרה במסלול קבוע בגודל אפס וכותבת רק מאפיין CSS מסוג transform, כך שהפריסה של העמוד שלכם אף פעם לא משתנה.
- הגלילה מואזנת באופן שאינו חוסם, ומצטמצמת לכתיבה אחת בכל פריים אנימציה.
- מתג אחד מסיר אותו מכל לשונית פתוחה באופן מיידי.
שום דבר מזה אינו התרברבות — זהו המינימום. דבר שכל תפקידו הוא להיות נעים לעין אין לו שום הצדקה להאט משהו.
ראו את הכלב