DCSIMG
Add functionality using Document Object Model Prototypes (IE8) - Part 2 - שלמה גולדברג (הרב דוטנט)

שלמה גולדברג (הרב דוטנט)

מרצה בסלע ויועץ בעולם ה - net.

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

 

איך להוסיף ולשנות מאפיינים ל - 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.
 
 
יש עוד הרבה מעבר למה שתיארתי - תוכלו לקרוא על זה כאן
פורסם: May 09 2010, 01:30 AM by Shlomo | with no comments
תגים:, , , ,
שלח תגובה

(שדה חובה)  

(שדה חובה)  

(אופציונלי)

(שדה חובה) 

Please add 6 and 2 and type the answer here:


Enter the numbers above: