ראשי > dhtml חוצה דפדפנים > מאמר חלק 3  > הוספות

הוספת objChangeSource לעצמים חוצי דפדפן

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

            
this.objChangeSource = objChangeSource; // add to object constructor

function objChangeSource(sourcefile, width) {
   this.obj.load(sourcefile, width);
}

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

הוספת הפונקציה לעצם חוצה דפדפן של IE אינה כל כך פשוטה. בחלק 1, כאשר העצם נוצר, נוצר עמו מצביע לעצם style של העצם, במקום להצביע ישירות לעצם עצמו. אמרנו שזה יצטרך להשתנות בחלק 3 של המאמר. הסיבה לשינוי היא שהתכונה “src” שמשמשת לטעינת התוכן החדש לתוך עמוד האינטרנט לא מתייחסת ישירות מהעצם style, אלא מהעצם עצמו. לכן, העצם צריך להשתנות וכל הפונקציות שמתייחסות לעצם צריכות להשתנות. בלוק הקוד הבא מראה את השינוי לבנאי העצם, לאחת מהפונקציות הקיימות בשם objGetTop ולשיטה (method) של העצם החדש:


// object constructor change
function wdvlNewObject(obj) {
this.obj = obj;   // rather than this.obj = obj.style

// element's top position
function objGetTop () {
return this.obj.style.pixelTop;
}

function objChangeSource(sourcefile,width) {
  var name = this.name;
  this.obj.src = sourcefile;
}
 

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

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

הפונקציות לשינוי קוד העמוד הנוסף יידונו בהמשך.

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