ראשי > dhtml חוצה דפדפנים > בן-כלאיים
בן-כלאיים
אם
נבחר שלא לתחזק שתי גרסאות נפרדות של עמודי
האינטרנט שלנו, נאלץ לבחור בגישה של קוד
כלאיים. בן-כלאיים הוא עמוד שהקוד שלו מכיל
אפשרות עבור כל דפדפן. בדרך זו, שני הדפדפנים
יכולים לטעון את אותו העמוד. זה לא אומר שכל
הקוד מבוצע ע"י שני הדפדפנים; ע"י שימוש
בגישה אחת או יותר נבנה קוד כך שהחלקים
הרלוונטיים שלו יבוצעו ע"י הדפדפן המתאים.
בוא
ונראה דוגמה. נגיד שהעמוד שלך מכיל בלוק של
תוכן, שנוצר ע"י שימוש בתג <div>:
<DIV ID="title" STYLE="position:absolute; top:10px; left:100px; width:150px;">
<P STYLE="font-family:Arial; font-weight:bold; color:red;">
Welcome to my World
</P>
</DIV>
ניתן ללחוץ כאן כדי לראות את הקוד בפעולה
כעת, נניח
שאתה רוצה לשנות את צבע הרקע של הבלוק. בידיעת
השוני ב-DOM
עבור כל דפדפן, אנחנו יודעים שתכונת צבע הרקע
עבור בלוק היא חלק מהעצם layer בנטסקייפ,
וחלק מהעצם style
במיקרוסופט. יותר מזה, תכונת צבע הרקע נקראת bgColor
בנטסקייפ ו-backgroundColor
במיקרוסופט. הדרך הפשוטה ביותר להכליא את
השינויים הללו לתוך קוד JavaScript היא להשתמש ב"מיני-פיצול":
<SCRIPT LANGUAGE="JavaScript1.2">
if (document.all)
{document.all["title"].style.backgroundColor="black"}
else {document.layers["title"].bgColor="black"}
</SCRIPT>
הפיצול
הקטן הזה עובד באותו עיקרון כמו הפיצול
העליון שראינו מוקדם יותר. השורה
if (document.all)
בודקת את סוג הדפדפן; למעשה, זה ידוע בשם מבחן
עצמים. אנו יודעים שאינטרנט אקספלורר תומך
בעצם all, ולכן זה יהיה התנאי שלנו.
בדיקה עבור עצם ספציפי, במקום בדיקת הגרסה של
הדפדפן, נחשבת כגישה אלגנטית יותר. אם דפדפן
אחר חוץ מהאקספלורר
יתמוך גם הוא בעצם all, הקוד יעבוד גם בדפדפן זה.
ניתן להניח שהדפדפן שהגיע לסקריפט
תומך בגרסה אחת בלבד של DHTML, אחרת היינו עפים מהתוכנית בשלב מוקדם
יותר. כך, אם הדפדפן לא תומך בעצם all (משפט ה-else
בדוגמה שלנו), הוא בודאי נטסקייפ (מכיוון שהוא
דפדפן ה-DHTML
היחיד הנוסף), ונוכל להשתמש בתחביר נטסקייפ
עבור ההצהרות שלנו.
לבסוף, הסקריפט למעלה ישנה את צבע הרקע
של הבלוק לשחור, ע"י שימוש בתחביר המתאים
עבור הדפדפן שנמצא בשימוש. זו גישת הכלאיים.
למרות שזהו פתרון מסורבל, יצירת קוד
כלאיים תשחק תפקיד חשוב בכל עמוד ב-DHTML חוצה-דפדפנים. למרות כל זה, קוד כלאיים
כזה אינו פסגת האינטליגנציה. עדיין תצטרך
לתחזק שתי גרסאות לעמוד, הן פשוט הושחלו יחד
לתוך עמוד אחד. אם תרצה לשנות את העמוד כך שצבע
הרקע ישתנה לירוק במקום שחור, עדיין תאלץ
לעדכן את הצבע בשני מקומות—ההצהרה עבור
מיקרוסופט וההצהרה עבור נטסקייפ, שנמצאות
באותו הקובץ.