ראשי > dhtml חוצה דפדפנים > מסקנה
בניית שפות על כדי לגשר על הפערים בין שני
סוגי ה-DOM
תביא אותך רחוק בבניית קוד חוצה-דפדפנים, אך
לא רחוק מספיק. במקרים מסוימים יש פערים בין ה-DOM-ים
שפשוט לא ניתנים לגישור. ה-DOM
של מיקרוסופט, לדוגמה, תומך בתכונת ה-innerText,
שמאפשרת לשחזר או לשנות טקסט הנמצא בין תגים.
במילים אחרות, תכונה זו יכולה "לראות" את
הטקסט בתוך פיסקה (<P>),
מה שמאפשר כתיבת קוד לחיפוש בתוכן העמוד.
בנטסקייפ אין תכונה מקבילה ואפילו לא תכונה
דומה. מכיוון שאין לך דרך לחקות תכונה זו
בנטסקייפ, עליך להחליט האם לתחזק אפליקציה
שמשתמשת בתכונה innerText
עבור משתמשי MSIE
בלבד, לוותר על האפליקציה או לחשוב מחדש על
הגישה שלך.
זו דוגמה מתסכלת להתחלה, אבל מקרים כאלה
קורים. בדרך כלל, אפילו אם אין תכונה מקבילה
בדיוק בשני ה-DOM-ים,
תוכל להשיג את האפקט הרצוי בשני הדפדפנים ע"י
שימוש בטכניקות שונות. למשל, נעסוק ב"סימן
המים" (watermark)
הפופולרי ב-DHTML,
שהפך לעממי ע"י GeoCities.
סימן מים הוא אובייקט שנשאר במקומו בעמוד,
אפילו אם המשתמש גולל את העמוד למעלה או למטה.
בקידוד סימן המים, על המתכנת לדעת כאשר המשתמש
מבצע גלילה של העמוד. חיוני לקבוע את מרחק
הגלילה כדי להתאים את מיקום סימן המים כך
שיופיע במקומו המקורי.
ה-DOM
של מיקרוסופט מציג לראווה אירוע scroll
מושך, שיכול "להידלק" כאשר המשתמש מבצע
גלילה של העמוד. זה מאפשר לדעת בקלות מתי
מתרחשת גלילה. בעיה קלאסית של קידוד חוצה
דפדפנים מופיעה כאן, כאשר הטריק של שפת על לא
מסייע לנו, כיוון שהבעיה עמוקה יותר מהתחביר
הפשוט. למרבה הצער, לא ניתן להציע הוראות
מדויקות שיפתרו סוג כזה של בעיה: אתה חייב
להסתמך על יצירתיות ועל ידע טוב של כל DOM.
במקרה הספציפי שלנו, הפתרון עבור נטסקייפ
אינו אלגנטי אבל יעיל: נקבע מתזמן ע"פ
רווחים (setInterval()),
שיקבע את מיקום העמוד (window.pageXOffset
ו-window.pageYOffset)
כל כמה מילי-שניות. בכל פעם שהערך שמתקבל שונה
מהערכים המקוריים של מיקום העמוד, נדע שהעמוד
נגלל ונוכל להמשיך מכאן את העבודה. כמו שתוכל
לראות, גישה שבה השתמשנו שונה לגמרי מהגישה של
מיקרוסופט, והרעיון נולד ממחשבה עמוקה או
מקריאת הקוד של עמודים באינטרנט, שגם היא דרך
מצוינת ללימוד.
ללא ספק, תמשיך לשמוע הבטחות ל-DOM
סטנדרטי. בעתיד, מן הסתם, כל המאמר הזה ייגנז,
ונוכל לכתוב קוד חוצה-דפדפנים. למעשה, המפרט
של DOM
ברמה 1 הוא המלצה רשמית של W3C.
מה זה אומר? קשה לדעת בוודאות. ייתכן
ומיקרוסופט ונטסקייפ יאמצו את ה-DOM,
וכל הטכניקות במאמר יהפכו לעתיקות. מצד שני,
מבט לטווח ארוך על מלחמת הדפדפנים אומר שהם
מתפתחים למערכות הפעלה שונות, וככאלה, אין
תקווה רבה לסביבת פיתוח סטנדרטית.
פיתוח אפליקציות מבוססות אינטרנט מוקף
במספר גדל והולך של טכנולוגיות, שה-DOM
מהווה חלק בלתי נפרד שלהן. אפילו במקרה של DOM
משותף, ייתכן שאספקטים אחרים של האינטרנט
יתפתחו בדרכים שונות, ואז הנושאים שהועלו
במאמר ימשיכו להיות רלוונטיים.