חזרה למאמרים

Smart Websites

עיצוב ממשקים עמידים: איך להשתמש ב-scripting media query ב-CSS

מדריך מעשי לשימוש ב-scripting media query ב-CSS. למדו איך לבנות אתרים שממשיכים לעבוד בצורה מופתית גם כשה-JavaScript נחסם, נכשל בטעינה או מתעכב בדרך.

3 דקות קריאהCSS · JavaScript · Web Development · UX · Progressive Enhancement

TL;DR

JavaScript עלול להיכשל מסיבות רבות — מחיבור אינטרנט מקוטע ברכבת ועד תוספי חסימת פרסומות. בעזרת @media (scripting: none) ב-CSS, אנחנו יכולים לוודא שהממשק נשאר נגיש, קריא ושמיש לחלוטין גם כשהסקריפטים לא פועלים.

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

מה זה scripting media query ואיך זה עובד?

בשנים האחרונות התרגלנו לבדוק גודל מסך או מצב כהה (Dark Mode) דרך CSS. אבל המפרט המודרני של CSS כולל תכונה חזקה נוספת: הזרמת מידע על יכולת הרצת הסקריפטים של הסביבה.

הגדרה · Scripting Media Feature

מאפיין CSS המאפשר להחיל כללי עיצוב בהתאם ליכולת של הדפדפן להריץ תסריטי JavaScript באותו רגע.

לתכונה זו יש שלושה ערכים אפשריים:

  • none: JavaScript אינו נתמך או מנוטרל לחלוטין.
  • initial-only: JavaScript פועל רק במהלך הטעינה הראשונית (למשל בדפי HTML מודפסים או סביבות קשיחות).
  • enabled: JavaScript מופעל ופועל כסדרו.

הנה דוגמה פשוטה למבנה הקוד:

/* סגנון ברירת מחדל לרכיב שנפתח ב-JS */
.mobile-menu {
  display: none;
}

/* אם הסקריפט אינו זמין — הצג את התפריט פתוח מראש */
@media (scripting: none) {
  .mobile-menu {
    display: block;
    position: static;
  }
}

למה JavaScript נכשל? הנתונים שלא מדברים עליהם

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

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

1% - 3%

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

מקור: Web almanac

כשמסתכלים על אלפי גולשים ביום, 3% הם עשרות לקוחות שפשוט נתקלים באתר שבור וממשיכים למתחרים.

דוגמה מעשית: אקורדיון שאינו תלוי ב-JS

בואו נסתכל על רכיב נפוץ: שאלות ותשובות (FAQ). ברוב האתרים, הלחיצה על השאלה מפעילה אירוע Click ב-JavaScript שפותח את התשובה. אם ה-JS לא נטען, התשובות נשארות מוסתרות לנצח.

להלן השוואה בין גישה רגילה לגישה עמידה:

מאפייןגישה תלוית JS בלבדגישה עמידה עם CSS Scripting
התנהגות בטעינה תקינהפתיחה וסגירה בריצהפתיחה וסגירה בריצה
התנהגות כשה-JS נכשלהתוכן נשאר מוסתרהתוכן מוצג מופתע מראש
נגישות בסיסיתתלויה בהתקנת ה-JSעובדת ישירות מה-HTML/CSS

כדי לפתור זאת, נוכל להשתמש באלמנט HTML טבעי כמו <details> ו-<summary>, ולהגדיר ב-CSS שבמידה ואין Scripting, התוכן יישאר פתוח ונגיש לקריאה רציפה.

@media (scripting: none) {
  details[data-accordion] summary {
    pointer-events: none;
    list-style: none;
  }
  
  details[data-accordion] {
    open: true;
  }
}

בצורה זו, המשתמש מקבל את כל התוכן על המסך. אין כפתורים מתים, אין תסכול.

אסטרטגיית Progressive Enhancement נכונה

בנייה נכונה לא מתחילה מ-JavaScript ואז מנסה תיקונים. היא מתחילה מבסיס HTML ו-CSS עובד, ומעליו מוסיפה את תכונות ה-JS כשיפור בלבד (Progressive Enhancement).

כשאתם מתכננים רכיב חדש, כבו את ה-JavaScript בדפדפן ובדקו: האם עדיין אפשר לקרוא את התוכן? האם טפסים עדיין נשלחים? אם התשובה היא לא, ה-scripting media query הוא הכלי שאתם צריכים.

עבודה נכונה עם @media (scripting: none) מחזירה את השליטה ל-CSS. היא מאפשרת להגדיר תפריטי ניווט פתוחים, טפסים ללא אופטימיזציות AJAX מורכבות, ותמונות המוצגות בטעינה רגילה במקום הזרמה דינמית שנכשלה.

סיכום

💡

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

השימוש ב-@media (scripting: none) אינו דורש שעות פיתוח רבות. מדובר במספר שורות CSS קצרות במקומות הקיצון של הממשק. הוספת הבדיקה הזו לשגרת העבודה מבטיחה שהאתר יישאר נגיש, שמיש ומכבד את המשתמש בכל מצב.

שאלות נפוצות

כל מה שעוד רצית לדעת

מה ההבדל בין תגית noscript לבין scripting media query?
תגית `<noscript>` מאפשרת להוסיף אלמנטים חדשים ל-DOM רק כשה-JavaScript מנוטרל. לעומת זאת, `@media (scripting: none)` מאפשר לשנות סגנונות עיצוב ב-CSS ישירות ללא תוספת של אלמנטים נוספים לקוד ה-HTML.
האם כל הדפדפנים תומכים ב-scripting media query ב-2026?
כן. התמיכה ב-`@media (scripting: none)` מלאה ונתמכת בכל הדפדפנים המובילים (Chrome, Safari, Firefox, Edge) החל מגרסאות ששוחררו בשנים האחרונות.
האם בדיקה זו מזהה גם מצב שבו הסקריפט נכשל עקב שגיאת שורת קוד?
השאילתה בודקת אם תכונת ה-Scripting פעילה בדפדפן. אם ה-JavaScript מנוטרל או נחסם ברמת הדפדפן/התוסף, התנאי מתקיים. אם ה-JS מופעל אך נזרקה שגיאה במהלך ההרצה, תזדקקו לניהול שגיאות בתוך הקוד עצמו.
האם גישה זו משפיעה על ביצועי האתר וה-SEO?
היא משפרת אותם. מנועי סריקה ובוטים של AI מקבלים תוכן נגיש וגלוי מיד, והמשתמש מרוויח טעינה מהירה יותר של רכיבים חיוניים.
AB

כתב

אדיר בן יעקב · Adir Ben Yaakov

מקים JustBetterSite, סוכנות בניית אתרים ושיווק דיגיטלי בתל אביב. מתמחה ב-GEO (Generative Engine Optimization) — בנייה של אתרים שמופיעים בתשובות של ChatGPT, Claude, Perplexity ו-Gemini, לא רק בגוגל.

עוד עליי →

להמשך הקריאה

מאמרים קשורים