Add functionality using Document Object Model Prototypes (IE8) – Part 2

9 במאי 2010

תגיות: , , , ,
אין תגובות


 



איך להוסיף ולשנות מאפיינים ל – DOM בעזרת prototype ב – IE8


 

 

כפי שהתחלתי לתאר כאן איך אפשר להוסיף ולשנות מתודות של ה – DOM ב – IE8, מסתבר שאפשר גם להגדיר מאפיינים ל – DOM.

 

 

לדוגמא:

 

נניח שאנחנו רוצים לדעת כמה אותיות יש בדף, נוכל תמיד לכתוב פונקציה ולקרוא לה, אבל מיד נראה שב – IE8 נוכל להוסייף מאפיין בשם words לאובייקט document ולקרוא לה. איך ? פשוט מאוד.

 

 



Object.defineProperty(document, "words",


{


    get: function() {


        var sum = 0;


        var arr = document.body.innerText.split(' ');


        sum = arr.length;


 


        for (var i = 0; i < arr.length; i++) {


            if (arr[i] == ") {


                sum–;


            }


        }


        return sum – 1;


    }


});





  • הפרמטר הראשון הוא על איזה אלמנט ב – DOM אנחנו רוצים להוסיף (או לשנות) מאפיין.


  • הפרמטר השני הוא שם המאפיין.


  • הפרמטר השלישי הוא מקטע של get/set שמכיל פונקצייה.

 


 


כדי לשנות מאפיין קיים ברוב המקרים נרצה לשמור את המאפיין הישן ולהוסיף עוד לוגיקה לפני ההפעלה שלו.

 

לדוגמא:

 

לכולם יצא לעבוד עם cookies הקריאה מ – cookie היא לא נחמדה, אופצייה שנייה היא לכתוב משהו כזה.

 



var oldCookieProp = Object.getOwnPropertyDescriptor(document, "cookie");


 


Object.defineProperty(document, "cookie",


{


    get: function() {


        return oldCookieProp.value.split(';');


    }


});


 

ואז הקריאה ל – cookie תמיד יחזיר את מערך העוגיות ללא צורך תמיד לעשות split.

 

 

יש עוד הרבה מעבר למה שתיארתי – תוכלו לקרוא על זה כאן

הוסף תגובה
facebook linkedin twitter email

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *