ראשי > תפריטי dhtml נשלפים > bug הרבדים ותסמונת סוף הדרך

 

ה-BUG של הרבדים ותסמונת סוף הדרך

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

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

האשמה, קורא יקר, אינה שלך, זו אשמת הדפדפן! .

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

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

1. הכחשה : " הbug-  הזה לא קיים! "

2. כעס : " איזה סוג של חברה מטופשת שחררה כזה דפדפן! ? "

3. הפסד : " כל השעות האלו שבזבזתי " .

4. כעס : " לעזאזל עם כל השעות שהתבזבזו! "

5. רחמים עצמיים : " למה אני מפתח של רשת? הייתי צריך לעקוב את החלום שלי .. בלט! "

6. קבלה : " אחזור לעבודה. שום דבר יכול לעצור אותי! "

מלאים במרץ מחודש, אנחנו חייבים להבין את הבעיה לעומק.

אפשרות אחת להימנע לגמרי מבעיית הטפסים , היא לשכוח את המושג של תפריטים ולשקול אלטרנטיבה. טכניקת DHTML  אחרת היא רשימה מתרחבת/מצטמצמת, שנעשתה פופולרית על ידי תוכנת "חלונות" . אולי תוכן העניינים יכול להתרחב ולהצטמצם ולגלות את אינדקס  המאמר לכל נושא. זה נשמע מושך, אבל לא רלוונטי לצורכי הלקוח שלנו משתי סיבות:

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

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

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

באופן גס, ננתב את הדאגות ביחס לגישת "החלון החדש" למספר נושאים:

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

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

התערבות המשתמש--בדרך כלל, התפריט הנשלף היה נעלם כאשר המשתמש היה בוחר קישור או מעביר את העכבר מהחלון. לרוע המזל, החלונות החדשים מכילים מרכיבים של חלון קרוב או של מערכת ההפעלה כמו ה-" X". אנחנו לא יכולים למנוע את זה. מה קורה אם המשתמש הולך וסוגר ידנית את החלון של התפריט? התפריט לא יופיע יותר כאשר המשתמש יעביר את העכבר מעל נושא, וצפויות טעויות נוראות של JavaScript. הפתרון היחיד כאן יהיה להתכונן למשתמש כזה. אנחנו נצטרך לבחון ולראות אם התפריט נסגר לפני שנעשה ניסיון לשלוף אותו, ואם התפריט נסגר, נצטרך לפתוח אותו שוב.  התערבות אחרת של משתמש מתייחסת להסתרת התפריט הפתוח בקביעות כאשר לא מתבצעת שליפה . הפתרון מאוד קל באינטרנט אקספלורר מפאת הגדרות הגודל המרושלות שלו. פשוט יש לקבוע מחדש את גודל החלון ל0- על 0 וכך להקטין את החלון לגודל מינימלי. שוב, זה לא אפשרי בנטסקייפ נוויגטור, ולכן אנחנו חייבים שוב להתפשר: כאשר התפריט לא נשלף ע"י המשתמש, נמקם את חלון התפריט מאחורי חלון הדפדפן העיקרי. לרוע המזל, זה לא אידיאלי, כי אם המשתמש מקטין את חלון הדפדפן העיקרי הוא יראה את חלון התפריט יושב על ה-desktop. נטסקייפ נוויגטור לא מאפשר לנו להעביר חלון חדש מהמסך.

הפשרות מקובלות על הלקוח. הגיע הזמן לממש את התוכניות .  

לעמוד הקודם      לעמוד הראשי        לעמוד הבא