ראשי > 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()">
זה כל מה שצריך כדי ליצור עצמים חוצי
דפדפן. עכשיו הזמן ליצור מקרה מבחן כדי להבטיח
שהעצמים נוצרו ואותחלו בצורה נכונה.