ראשי > dhtml חוצה דפדפנים > מאמר חלק 1 > הכללת עצמים בעמוד

הכללת עצמים חוצי דפדפן בעמוד

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

  לעת עתה, הטכניקה להכללת העצמים של שני הדפדפנים בעמוד היא:

<SCRIPT src="ns4_obj.js" language="javascript1.2">
</SCRIPT>

<SCRIPT src="ie4_obj.js" language="jscript">
</SCRIPT>

הטכניקה כוללת קוד JavaScript. קובץ קוד המקור הראשון שמוכלל בעמוד הוא של נוויגטור, עם המונח “javascript1.2”. השני הוא הקובץ של IE, עם המונח “jscript”. אם העצמים ושגרות האתחול שלהם נקראים בשם זהה, מה מונע מדפדפן לקחת את הקוד השגוי עבורו?

ראשית, נוויגטור לא ייקח קוד ממפרט סקריפט שאינו מעבד, ולכן לא ייקח את קוד ה"jscript". כעת, IE 4.0 מעבד גם JavaScript 1.2 וגם Jscript, ובעצם יטען את שני הקבצים. אבל, אם שני הקבצים מכילים פונקציות עם שם זהה, בתור ברירת מחדל IE יעדיף להשתמש בפונקציות מהבלוק שהוכלל אחרון בעמוד. מכיוון שהקוד עבור העצם חוצה הדפדפן של IE ממוקם לאחר הקוד עבור העצם של נוויגטור, IE ייקח את הפונקציות מהקובץ המתאים. על בסיס זה, חיוני לשמור על הסדר שבו מוכללים הקבצים בעמוד.  

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

<BODY onload="wdvlCreateObjects()">

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

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