JavaScript

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה אל: ניווט, חיפוש

JavaScript היא שפת תסריט תכנות מונחה דגמי אב (Prototypes), סגנון מסוים של מונחית עצמים. היא ידועה בעיקר כשפה המוטבעת בדפי HTML על מנת להציג דפים דינמיים, שמשולבת בהם תוכנה. קוד ה-JavaScript שמשולב בדף HTML מבוצע על ידי הדפדפן. JavaScript נוחה מאוד לעבודה עם ה-DOM ולתפעול DHTML.

השפה נוצרה על ידי חברת נטסקייפ בשנת 1995, ויושמה לראשונה בדפדפן נטסקייפ 2.0. הגרסה הייתה JavaScript 1.0. בנוסף לכתיבת תסריטים בצד הלקוח (בדפדפן) מאפשרת JavaScript כתיבת תסריטים גם בצד השרת, לתפעול בשרת אינטרנט. מבחינת שפה, וגם מבחינת התחביר שלה, מזכירה JavaScript את שפת ActionScript שמיוחדת לפלאש. גרסה תקנית של השפה קרויה ECMAScript.

חברת מיקרוסופט יצאה בשפה מתחרה, VBScript, להפעלה בדפדפן, אך לא הצליחה ביעד זה (היא הצליחה יותר בשימושים אחרים של השפה, כולל כתיבת תסריטים בצד השרת - ASP). בנוסף יצאה מיקרוסופט עם גרסה משלה של שפת JavaScript, והיא קרויה JScript. דבר זה גורם עד היום לבעיות רבות בקרב מפתחי האינטרנט, בין אם בגלל מפתחים המעלימים עין מהעובדה שהם מתכנתים ב־JScript בלבד, ומתעלמים מדפדפנים אחרים המפענחים את JavaScript הרגילה – ובין בגלל מפתחי אתרים הסובלים לשווא בהתגברות על חוסר התמיכה של הדפדפן אינטרנט אקספלורר של מיקרוסופט בחלקים תקניים מ־JavaScript.

תוכן עניינים

[עריכה] דוגמה לתוכנית JavaScript

התוכנית המופיעה להלן כתובה בשפת JavaScript, והיא בודקת האם מספר שהועבר אליה הוא מספר ראשוני. הסימן "//" מציין שהטקסט שמימינו אינו חלק משפת התכנות, אלא הוא הערה שמטרתה להסביר את התוכנית למתכנת הקורא אותה. התוכנית מחולקת לשתי פונקציות, האחת בודקת האם מספר נתון הוא ראשוני, והשנייה מטפלת בדיאלוג עם המשתמש: קבלת המספר לבדיקה (קלט) והצגת תוצאות הבדיקה (פלט).

<input type="text" id="primetest" value="" />
<input type="button" onclick="communicate();" value="Check" />
 
<script type="text/javascript">
        function check(n)
        { // Check if the number n is prime.
                if (n <= 3)
                        return 0;
                if (n%2 == 0) // is n divisible by 2?
                        return 2;
                if (n%3 == 0) // is n divisible by 3?
                        return 3;
                if (n%5 == 0) // is n divisible by 5?
                        return 5;
                var sr = Math.sqrt(n);
                // try to divide the checked number by all numbers till its square root.
                for (var i=6; i<=sr; i+=6)
                {
                        if (n%(i-1) == 0) // is n divisible by i-1?
                                return i-1;
                        if (n%(i+1) == 0) // is n divisible by i+1?
                                return i+1;
                }
                return 0; // n is a prime, 0 returns.
        } // End of check function.
 
        function communicate()
        { // communicate with the user.
                var i; // the checked number.
                var factor; // if the checked number is not a prime, this is its first factor.
                i = document.getElementById("primetest").value; // get checked number, using DOM.
                // it is a valid input?
                if ( isNaN(i) || (i <= 0) || (Math.floor(i) != i) )
                        alert("The checked object should be a whole positive number");
                else
                {
                        factor = check(i);
                        if (factor == 0)
                                alert(i + " is a prime");
                        else
                                alert(i + " is not a prime, " + i + "=" + i/factor +"x"+ factor);
                }
        } // End of communication function
</script>


[עריכה] אבטחה בתוכניות JavaScript

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

[עריכה] JavaScript Manipulation

ניתן להזריק ולהריץ קוד שלא מוזכר כלל בקוד מקור, בכל דף אינטרנט שמופיע בדפדפן. שיטה זו נקראת JavaScript manipulation. ב-JavaScript manipulation מכניסים את פקודות הסקריפט בשורת הכתובת של הדפדפן, ולרוב הוא מיועד להשפיע על ה-DOM. דוגמה:

javascript: alert(document.cookie);

בדוגמה זו נקפיץ באמצעות הפקודה alert תיבת הודעה עם העוגיות ששמורות במחשב לדף זה.


קישור למאמר שמלמד ומדגים את שיטות העבודה, מופיע למטה בקישורים חיצוניים.


על מנת להגן מפני התקפות הינדוס חברתי (social engineering), השימוש בשיטה זו מוגבל בחלק מגרסאות הדפדפנים המודרניות.

לדוגמה, במוזילה פיירפוקס בגרסה 6 ומעלה, קוד שהוזרק בשיטה זו, לא יורש את ההקשר של הדף. כלומר, לקוד זה לא יתאפשר להשפיע על ה-DOM.

בגוגל כרום ובאינטרנט אקספלורר בגרסה 9 ומעלה, כאשר מדביקים כתובות כאלה בשורת הכתובת, הפרוטוקול (javascript:) מושמט מהכתובת המודבקת.

לדוגמה, הדבקת הקוד מהדוגמה הקודמת בשורת הכתובת ידביק את הקוד הבא -

alert(document.cookie);

[עריכה] ייבוא קובצי JS

ניתן גם לייבא את הסקריפט מתוך קובץ, במקום לכתוב הכל בדף HTML, באמצעות הפרמטר src (קיצור של source) בתגית script. דוגמה:

<script type="text/javascript" src="filename.js"></script>

כאשר filename.js הוא קובץ ה .js אליו מפנים.

קובץ ה-.js מכיל בעצם את כל הפקודות המופיעות בתוך התגית <script>.

[עריכה] ראו גם

[עריכה] קישורים חיצוניים

מיזמי קרן ויקימדיה
ויקיספר ספר לימוד בוויקיספר: JavaScript
כלים אישיים
גרסאות שפה
מרחבי שם
פעולות
ניווט
קהילה
תיבת כלים
דף זה בשפות אחרות
הדפסה/יצוא