[עמוד ראשי]   [נושא קודם]
מודל אובייקט ה-Document

כאשר אובייקט ה- Window, אשר מציג חלון או מסגרת (frame), הוא האובייקט המרכזי בצד הלקוח ב- JS, אובייקט ה- Document, אשר מציג תוכן של חלון או מסגרת, הוא השני ואף מתקרב לקודמו. השימוש באובייקט זה, קרוב לודאי, הוא הנפוץ ביותר בצד הלקוח ב- JS.
לאובייקט ה- Document תכונות המגדירות מידע על הדפסת המסמך בדפדפן ה- URL, תאריך אחרון שעודכן, ה- URL של המסמך המקושר אליו, הצבעים בהם הוא מודפס, וכ"ו.
לאובייקט ה- Document גם מתודות אשר מאפשרות לתוכנית JS להכניס קלט באופן דינמי לתוך מסמך ובאופן דינמי ליצור מסמכים חדשים.
מספר תכונות של אובייקט ה – Document הן מערכים אשר מציגים טפסים, תמונות, קישורים, anchors, וישומונים המוכלים במסמך. מערכים אלו והאובייקטים שהם מכילים חשובים מאוד בתכנות ב- JS.

עם ההצגה של אינטרנט אקספולרר 4, אובייקט זה נעשה השורש של מה שידוע כ- (document object model (DOM.
ה- DOM הוא סטנדרט מפותח אשר מגדיר איך שפת תסריט (scripting language), כמו JS, יכולה לגשת ולהפעיל את המבנה המפורט של מסמך HTML .

1. ה- DOM : סקירה כללית
לכל אובייקט Window יש תכונה בשם document. תכונה זו מתייחסת לאובייקט Document אשר מציג את המסמך המודפס בתוך החלון.
אובייקט ה- Document מספק מספר תכונות, כמו bgColor, lastModified, אשר מספקות מידע על המסמך בשלמותו. הוא אף מגדיר מתודת ( )write המאפשרת לקוד JS להוסיף באופן דינמי טקסט HTML למסמך בזמן ניתוחו.

צד הלקוח ב- JS קיים על מנת להפוך מסמכי HTML סטטיים לתוכנית אינטראקטיבית- זהו אובייקט ה- Document שנותן ל-JS גישה אינטראקטיבית לתוכן של מסמכים סטטיים אחרים.
לאובייקט ה- Document מספר תכונות אשר מתייחסות למערכים של אובייקטים מעניינים ש- JS יכולה לפעול עליהם.
למשל, המערך [ ]forms מכיל אובייקטים מסוג Form אשר מציגים את כל טופסי ה- HTML במסמך. המערכים: [ ]images[ ], applets מכילים אובייקטים אשר מציגים תמונות וישומונים במסמך. מערכים אלו פותחים מגוון של אפשרויות עבור תוכניות מצד הלקוח ב- JS.

אובייקט ה- Document התפתח מאז ש- JS אפשרה דפדפני web. למשל, 1.1 JS הציגה את המערך [ ]images והאובייקטים Image שהוא מכיל. אובייקטים אלו אפשרו לתוכנית JS לשנות תמונות במסמך באופן דינמי, להפיק אפקטים מיוחדים חדשים בדפי ה- web.

התפתחות זו ממשיכה. רק מספר קטן של אלמנטים ב- HTML כמו טפסים וקישורים מקבלים יחס מיוחד ע"י אובייקט ה- Document. המטרה היא להחליף את המקרה המיוחד הזה-אובייקט ה- Document במודל אובייקט מסמך כולל אשר מאפשר ל- JS או לשפות תסריט אחרות גישה מלאה לאלמנטים, לתכונות, ולטקסט של כל מסמך HTML או XML.

אינטרנט אקספלורר 4 מיישם אובייקט כזה, אבל N 4 לא. חוסר ההתאמה בין שני דפדפנים אלו מוסיפה לדחיפות של המאמץ לקביעת תקן נוכחי,תחת העידוד של איחוד ה- WWW, כלומר ליצור DOM משותף ששני הדפדפנים יתמכו בו. Netscape ו- Microsoft התחייבו לתמוך בסטנדרט שהתגלה מהתהליך.
בינתיים, התכונות הקימות, מתודות, ומערכים של אובייקט ה- Document מהווים "level 0" של סטנדרט ה- DOM. יש לשים לב שה-DOM המיושם ע"י אינטרנט אקספולורר 4 דומה ל- level 1.

כינוי אובייקט ה- Document

כל אלמנט <FORM> במסמך HTML יוצר אלמנטים ממוספרים במערך ה- [ ]forms של אובייקט ה- Document. באופן דומה, כל אלמנט <APPLET>יוצר אלמנט של מערך [ ]applets.
כמו כן לגבי התוויות : <A>, <IMG>, <EMBED>.

בנוסף למערכים אלו, בכל אופן, אם אחת מהתוויות הללו מקבלת תכונת NAME, הערך של תכונה זו משמש כשם של תכונת אובייקט ה- Document. הערך של תכונה זו הוא האובייקט שמציג את התווית. למשל, נניח שמסמך HTML כולל את הטופס הבא :
<FORM NAME ="f1">
<INPUT TYPE ="button" VALUE ="push Me">
</FORM>
קוד JS יכול להתייחס לתוצאת אובייקט ה- Form באמצעות שני הביטויים הבאים :
document.forms[0]	// התיחסות לטופס ע"י מיקום במסמך
document.f1	// התיחסות לטופס ע"י שם 
נוח לתת שמות לאובייקטי Document שמשתמשים בהם לעיתים קרובות כך שניתן להתייחס אליהם ביתר קלות בתסריטים.

אובייקטי Document וארועים

על מנת שמסמך HTML יהיה אינטראקטיבי, המסמך והאלמנטים שבתוכו חייבים להגיב לארועי המשתמש.
חשוב לזכור ש- event handlers מוגדרים עי תכונות כמו onClick ו- onMouse של אלמנטים של HTML. הערכים של תכונות אלו צריכים להיות מחרוזות של קוד JS. קוד זה פועל כאשר האירוע המסוים מתרחש באלמנט ה-HTML.

2. תכונות ה-Document
אובייקט ה- Document מגדיר את התכונות הבאות:
alinkColor
צבע הקישור כאשר הוא פועל. מתאים לתכונת ה- ALINK של תווית ה- <BODY>.
anchors
מערך של אובייקטי anchor אשר מציג את ה- anchors במסמך.
applets
מערך של אובייקטים אשר מציג את הישומונים במסמך.
bgColor
צבע הרקע של המסמך. מתאים לתכונת ה- BGCOLOR של תווית ה- <BODY>.
cookie
תכונה מיוחדת שמאפשרת ל- JS לקרוא ולכתוב cookies HTTP.
domain
תכונה המאפשרת בצורה הדדית לסמוך על שרתי web עם אותו internet domain, ליצור שיתוף פעולה על הגבלות בטיחות מסוימות על אינטראקציות בין דפי ה- web שלהם.
embeds
מערך של אובייקטים אשר מציג את האובייקטים המשובצים במסמך.
fgColor
צבע ברירת המחדל של הטקסט במסמך. מתאים לתכונת ה-TEXT של תווית ה- <BODY>.
forms[ ]
מערך של אובייקטים של Form אשר מציגים את האלמנטים <FORM> במסמך.
images[ ]
מערך של אובייקטים של Image אשר מציגים את האלמנטים <IMG> במסמך.
lastModified
מחרוזת המכילה את תאריך ההשתנות האחרון של המסמך.
linkColor
צבע הקישורים שטרם "בוקרו" במסמך. מתאים לתכונת ה-LINK של תווית ה- <BODY>.
links[]
מערך של אובייקטים של Link אשר מציג את קישורי ההיפר טקסט במסמך.
location
מילת גנאי נרדפת לתכונת ה- URL. תכונה זו קיימת רק עבור תאימות עם 1.0 JS
referrer
ה- URL של המסמך אשר מכיל את הקישור שהמשתמש הקליק על מנת לקבל את המסמך הנוכחי, אם בכלל.
title
הטקסט בין התוויות: <TITLE> ו- </TITLE> במסמך.
URL
המחרוזת המגדירה את ה- URL שממנו נטען המסמך. הערך של תכונה זו הוא אותו ערך של התכונה location.href של אובייקט ה- Window, אלא אם כן מתרחש כיוון מחדש של השרת.
vlinkColor
הצבע של הקישורים שבוקרו במסמך. מתאים לתכונת ה-VLINK של תווית ה- <BODY>.
התכונות של צבע אובייקט ה- Document הן תכונות read/write, אבל ניתן לקבוע אותן רק לפני שתווית ה- <BODY> נותחה. ניתן לקבוע אותן באופן דינמי בחלק של ה- <HEAD> במסמך או שניתן לקבוע אותן בצורה סטטית כתכונות של התווית <BODY>.
תכונת ה- bgColor היא היוצאת מן הכלל עבור חוק זה. ניתן לקבוע אותה בכל זמן. דבר שיגרום לשינוי צבע הרקע של חלון הדפדפן.

כל אחת מתכונות צבע אלו בעלת ערך של מחרוזת. על מנת לקבוע צבע, ניתן להשתמש באחד משמות הצבע מהרשימה המוגדרת מראש ב :
http://developer.netscape.com/docs/manuals
               /communicator/jsguide4/colors.htm
מספר תכונות נוספות של הן לדוגמא, lastModufued, title, ו- URL. הקוד הבא מראה כיצד משתמשים בהן על מנת לכלול timestamp אוטומטי במסמך. זה מאפשר למשתמש להבין איך מסמך הוא up-to-data. הקוד הבא משתמש במתודה ( )write :

<HR>
<FONT SIZE=1>
Document:    <I><SCRIPT> document.Write(document.title);        </SCRIPT></I><BR>
URL:         <I><SCRIPT> document.write(document.URL);          </SCRIPT></I><BR>
Last Update: <I><SCRIPT> document.write(document.lastModified); </SCRIPT></I>
</FONT>
תכונה מעניינת נוספת היא: referrer.
שימוש אחד הוא לשמור ערך זה בשדה חבוי של טופס בדף ה- wave. כאשר המשתמש טוען את הטופס (submit), ניתן לשמור את הנתון referrer בשרת. דבר המאפשר לנתח את הקישורים אשר מתייחסים לעמוד, וניתן גם לעקוב אחר החלקים שהשתמשו בהם דרך הקישורים השונים.
שימוש אחר בתכונה זו הוא טריק על מנת למנוע קישורים בלתי מורשים בעמוד. לדוגמא, נניח ורוצים לאפשר מיקומים אחרים לקישור לרמה הגבוהה ביותר של עמוד הבית של האתר.
ניתן להשתמש בתכונת ה - referrer בצירוף עם התכונה location של אובייקט ה- Window, על מנת לכוון שנית כל קישור מחוץ לאתר לרמה הגבוהה ביותר בדף הבית.
<SCRIPT>
if(document.referrer == "" || document.referrer.indexOf("mysite.com") == -1)
   window.location = http://home.mysite.com;
</SCRIPT>
3. מסמכים דינמיים
אובייקט ה-Document מגדיר ארבע מתודות אשר מאפשרות לתוכנית JS להוסיף באופן דינמי, טקסט HTML בזמן ניתוח המסמך :
write( ), open( ), close( ), writeln( )
כמו כן, הן מאפשרות ליצור באופן דינמי מסמכים חדשים שלמים.

מתודות write( ), open( ), close( ), writeln( )

המתודה ( )write, היא אחת מהמאפינים היותר חשובים של אובייקט ה- Document, המאפשרת לצרף תוכן דפי web מתוך תוכנית JS באופן דינמי. קיימות מספר דרכים לשימוש במתודה.
הדרך המקובלת היא להשתמש בה בתוך script על מנת לצרף פלט HTML לתוך המסמך שכרגע נטען. יש לשים לב שניתן לצרף פלט HTML למסמך הנוכחי רק בזמן טעינתו. כלומר, ניתן לקרוא ל- ( )document.write מתוך תוויות <SCRIPT>, מאחר ותסריטים אלו פועלים כחלק מתהליך טעינת המסמך.
אם קוראים ל- ( )document.write מתוך- event handler, מתבצעת כתיבה על המסמך הנוכחי במקום הוספת טקסט.

למרות שלא ניתן לכתוב לתוך המסמך הנוכחי מתוך event handler, אין סיבה שלא ניתן לכתוב לתוכו מתוך בחלון אחר או frame, זוהי טכניקה שימושית בסביבת אתרי web מרובי חלונות או מסגרות. למשל, קוד JS במסגרת אחת, באתר מרובה מסגרות, יכול להציג מסר במסגרת אחרת ע"י הקוד הבא :
<SCRIPT>
parent.frames[0].document.open();
parent.frames[0].document.write("<HR>Hello from your sibling frame!<HR>");
parent.frames[0].document.close();
</SCRIPT>
על מנת ליצור מסמך חדש, תחילה קוראים למתודה ( )open של אובייקט ה- Document, לאחר מכן קוראים למתודה ( )write, כרצוננו, על מנת לכתוב את תוכן הפלט של המסמך ולבסוף קוראים למתודה ( )close לציין על סיום.
הצעד האחרון חשוב, אם לא סוגרים את המסמך הדפדפן לא עוצר את פעולת טעינתו. כמו כן, הדפדפן יכול לחצוץ את ה-HTML שנכתב. לא נדרש להדפיס את הפלט שאוחסן עד שמסיימים במפורש את המסמך, ע"י קריאה ל- ( )close.

בניגוד למתודה ( )close שנדרשת, הקריאה ל- ( )open היא אופציונלית. אם קוראים ל- ( )write עבור מסמך שכבר נסגר, JS פותחת מסמך HTML חדש, כאילו שקוראים למתודה ( )open. עובדה זו מסבירה מה קורה כאשר קוראים ל- ( )document.write מתוך event handler בתוך אותו מסמך,בזמן התהליך, המסמך הנוכחי מושמד.
ב-N 3 ומעלה זה גורם לקשיי תכנות מפתיעים והודעות שגיאה בלתי צפויות. ב-N 2 זה יכול לגרום לדפדפן להתקע. ככלל,מסמך לעולם לא יקרא למתודה ( )write עבורו מתוך event handler.

המתודה ( )write יכולה לקבל יותר מארגומנט אחד. כאשר מעבירים מספר ארגומנטים, הם מועברים אחד אחרי השני, כאילו היו משורשרים. לכן במקום לכתוב :
document.write('Hello, ' + username + "welcome to my home page!");
ניתן לכתוב כך :
document.write('Hello, ' ,username,"welcome to my home page!");
אובייקט ה- Document תומך גם במתודה ( )writeln הזהה למתודה ( )write פרט לכך שהיא מוסיפה תו של שורה חדשה אחרי העברת הארגומנטים. מאחר ו- HTML מתעלם משורות רווח, תו זה בדר"כ אינו יוצר שינוי, אך המתודה ( )writeln נוחה יותר כאשר עובדים עם מסמכים שאינם מסמכי HTML.

הדוגמא הבאה מדגימה כיצד ניתן ליצור תיבת דו שיח מורכבת ע"י המתודה ( )open של Window וע"י מתודות של אובייקט ה- Document.
דוגמא זו משלבת פונקצית event handler, onerror עבור החלון. הפונקציה נקראת כאשר מתרחשת שגיאת JS. פונקציה זו יוצרת חלון חדש ומשתמשת במתודות של האובייקט Document על מנת ליצור טופס HTML בתוך החלון. הטופס מאפשר למשתמש לראות את פרטי השגיאה ולשלוח email על דיווח ה-bug למחבר קוד ה-JS.

4. טפסים
מערך ה- [ ]forms של אובייקט ה- Document מכיל אובייקטים של Form אשר מציגים כל אלמנט <FORM> במסמך.
מכיוון שמסמכי HTML כוללים כפתורים נלחצים, שדות קלט טקסט, ואלמנטים של קלט אחרים שבדר"כ כוללים את ה- GUI של אפליקצית web, אובייקט ה- Form הוא חשוב מאוד בצד הלקוח ב- JS.
אובייקט ה-Form בעל תכונת [ ]elements המכילה אובייקטים המציגים את האלמנטים של קלט HTML המוכלים בטופס. אובייקטים אלו מאפשרים לתוכנית JS לאחסן ערכי ברירת מחדל בטופס ולקרוא את קלט המשתמש מתוך הטופס.
לנושא זה מוקדש פרק נפרד.
5. תמונות
תכונת ה- [ ]images של אובייקט ה- Document היא מערך אלמנטים של תמונות, הנוצרים ע"י התווית <IMG>, המוכלת במסמך.
מערך ה- [ ]images ואובייקט ה- Image הוספו ב- 1.1 JS .
דפדפני ה- web תמיד היו מסוגלים להציג תמונות ע"י התווית <IMG>, התוספת של אובייקט ה-Image מאפשרת לתוכניות להפעיל באופן דינמי את התמונות.

החלפת התמונות בתכונת ה-src

המאפיין המרכזי של אובייקט ה- Image הוא שתכונת ה- src שלו היא read/write.
ניתן לקרוא תכונה זו על מנת לקבל את ה- URL שממנו נטענה התמונה ויותר מכך, ניתן לקבוע תכונה זו, כך שתגרום לדפדפן להטען ולהדפיס תמונה חדשה באותו מקום. על מנת ליישם זאת, התמונה החדשה חייבת להיות בעלת אותו רוחב ואורך כמו של התמונה המקורית.
היכולת להחליף באופן דינמי תמונה אחת, במסמך HTML סטטי, בתמונה אחרת פתחה את הדלת לאפקטים חדשים, כמו אנימציה, תמונות המשתנות כשמקליקים עליהם, שעונים דיגיטליים המעדכנים את עצמם בזמן אמת.

החבאת תמונות

על מנת לאלץ תמונה להיות חבויה, יוצרים תמונת off-screen וטוענים את התמונה המבוקשת לתוכה.
כאשר התמונה נדרשת, היא יכולה להטען במהירות מה"מחבוא", במקום להטען באיטיות על פני הרשת.
הדוגמא הבאה מדגימה אנימציה ע"י טכניקה זו :


<img id="animation">

<FORM>

<INPUT TYPE=button VALUE="Start" 
onClick="if(timeout_id==null && num_loaded_images==10) animate()">
 
<INPUT TYPE=button VALUE="Stop"
onClick="if(timeout_id)clearTimeout(timeout_id); timeout_id=null;">

</FORM>
דוגמא זו מדגימה את הצעדים החשובים המעורבים ביצירת תמונת off_screen עבור החבאת תמונה.
הצעד הראשון הוא יצירת אובייקט Image ע"י הבנאי ( )Image. הצעד השני הוא הצבת ה- URL של התמונה הרצויה לתכונת ה- src של אובייקט ה- Image החדש שנוצר. פעולות אלו גורמות לדפדפן להתחיל לטעון את התוכן של ה- URL המצוין
(אלא אם כן ההחבאה בוטלה) ולתמונה להטען לתוך ה- cache, למרות שהיא לא מוצגת בכל מקרה.

על מנת לבצע החלפת תמונה ע"י אובייקט off-screen Image, לא מציבים את אובייקט ה- Image ישירות לתוך המערך [ ]images של אובייקט ה-Document. במקום זאת, קובעים את תכונת src של תמונת ה- on-screen הרצויה לתוך ה- URL של התמונה המבוקשת.
אם ה- URL נטען בעבר ע"י תמונת off-screen, התמונה המבוקשת אמורה להיות ב- cache
והחלפת תמונת ה- on-screen מתבצעת במהירות. השימוש ב- off-screen image הוא למטרת טעינת התמונה, אך אין דבר אחר שניתן לבצע על-ידו.

Image event handler

בדוגמא הקודמת, האנימציה לא מתחילה עד שהמשתמש מקליק על הכפתור Start, כך יש זמן המספיק לתמונות להטען לתוך ה-cache.
אך מה עם המיקרים הנפוצים יותר בהם רוצים להתחיל את האנימציה באופן אוטומטי ברגע שכל התמונות הנדרשות נטענו ?
מסתבר שתמונות, שנוצרו על המסך ע"י תווית ה- <IMG> או off-screen עם הבנאי ( )Image, בעלות event handler בשם onLoad הנקרא כאשר התמונה נטענה בשלמותה.
הדוגמא הבאה היא עדכון לדוגמא הקודמת ומראה כיצד ניתן להתחיל באופן אוטומטי את האנימציה ברגע שהתמונות נטענו.
<SCRIPT>

// ספירת מספר התמונות שנטענו כאשר המספר יהיה שווה ל- 10, תתחיל האנימציה

function count_images()
 {
   if(++num_loaded_images == 10) animate();
 }

var num_loaded_images = 0;
יצירת תמונות ה-off-screen והצבת ה-URL של התמונות. כמו כן, הצבת event handler על מנת לספור את התמונות שנטענו.
יש לשים לב שמציבים את ה-handler לפני ה-URL מפני שאחרת, טעינת התמונות עלולה להסתים לפני הצבת ה-handler, ואז נפסיד את מספר התמונות שנטענו.
var images = new Array(10);
for(var i=0; i < 10; i++)
 {
   // Image יצירת אובייקט
  images[i] = new Image();  

   // event handler הצבת ה         
  images[i].onload = count_images;   

  // לטעינה URL ה 
  images[i].src = "images/" + i + " .gif";    
 }
	
function animate()  // הפונקציה המבצעת את האנימציה.
 {
  document.animation.src = images[frame].src;
  frame = (frame+1) %10;
  // הדפסת המסגרת הבאה מאוחר יותר
  timeout_id = setTimeout("animate()",250);    
 }
  // שמירת המסלולשל המסגרת של האנימציה
  var frame = 0;   

  // זה מאפשר את הפסקת האנימציה
  var timeout_id = null;    
</SCRIPT>

<! כפתורים לשלוט על האנימציה >

<FORM>
  <INPUT TYPE=button VALUE="Start" 
     onClick="if (timeout_id == null && num_loaded_images == 10) animate()"> 
  <INPUT TYPE=button VALUE="Stop" 
     onClick = "if(timeout_id) clearTimeout(timeout_id); timeout_id=null;">
</FORM>
בנוסף ל-onLoad event handler , אובייקט ה- Image תומך בשני event handlers נוספים.
ה- event handle onError נקרא כאשר מתרחשת שגיאה בזמן טעינת תמונה, למשל כאשר URL מתיחס לנתון שגוי של תמונה.
ה- onAbort handler נקרא אם המשתמש מבטל את טעינת התמונה, למשל ע"י קליק על הכפתור Stop בדפדפן, לפני שהסתימה. עבור כל תמונה רק אחד מהם נקרא.

בנוסף לכך, כל אוביקט Image בעל תכונת complete.
תכונה זו בעלת ערך false בזמן טעינת התמונה, ערך זה משתנה כאשר התמונה נטענה, כאשר הדפדפן הפסיק את הנסיון להטעינה או לאחר קריאה לאחד מה- event handler הנ"ל.

תכונות נוספות של ה-Image

אובייקט ה- Image בעל תכונות נוספות, רובן הן תכונות read-only שבדר"כ משקפות תכונות של התווית <IMG> היוצרת את התמונה.
התכונות: width, height, border, hspace ו- vspace הן מספרי read-only שלמים אשר מגדירים את גודל התמונה, רוחב הגבול ואת הגודל של השוליים האנכיות והאופקיות.
תכונות אלו נקבעות ע"י התכונות של תווית ה- <IMG>.

תכונת ה-lowsrc של אוביקט ה- Image משקפת את תכונת ה- LOWSRC של תווית ה- IMG, היא מגדירה את ה- URL של תמונה אופציונלית להצגה כאשר הדף מוצג על התקן עם רזולוציה נמוכה.
תכונת ה- lowsrc היא מחרוזת read/write ,כמו src. בניגוד ל- src, קביעת תכונה זו לא גורמת לדפדפן להטעין ולהציג את התמונה בעלת הרזולוציה הנמוכה החדשה שהוגדרה.
אם רוצים לבצע אנימציה או אפקטים מיוחדים אחרים העובדים עם רזולוציה נמוכה, יש לעדכן את התכונה lowsrc לפני שקובעים את התכונה src. אם עובדים עם דפדפן הרץ על התקן בעל רזולוציה נמוכה, כאשר קובעים את התכונה src הוא טוען את התמונה lowsrc החדשה במקום.
6. קישורים
מערך ה- [ ]links של אובייקט ה- Document מכיל אובייקטים מסוג Link המציגים כל אחד מקישורי ההיפר טקסט במסמך.
אובייקט ה- Link מציג את ה- URL של קישור ההיפר טקסט ומכיל את כל התכונות של האובייקט Location.
לדוגמא, התכונה href של אובייקט ה- Link מכילה את הטקסט השלם של ה- URL אליו מתקשרים, בעוד שתכונת ה- hostname מכילה רק את החלק של ה- hostname של ה- URL.
הדוגמא הבאה מראה פונקציה היוצרת רשימה של כל הקישורים במסמך. הקובץ listlinks.js מכיל את כל הקישורים במסמך המוגדר בחלון חדש :
function listlinks()
{
 d=window.document;
 var newwin = window.open("","linklist","menubar,scrollbars,resizable,width=600,height=300");
 for(vari=0; i < d.links.length; i++)
 {
   newwin.document.write('<A HREF=" ' +d.links[i].href+ ' ">')
   newwin.document.write(d.links[i].href);
   newwin.document.writeln("</A><BR>");
  }
 newwin.document.close();
}		


ב- N 4 דוגמא זו אינה יכולה להשתמש בתכונה text של אוביקט ה- Link.
תכונה זו כוללת את הטקסט שמופיע בין התוויות <A>ו- </A> של קישור ההיפר טקסט.
תכונה זו אינה נתמכת באינטרנט אקספלורר 4, בדפדפן זה ניתן להשתמש ב- innerText או innerHTML במקום.

קישורים, web Crawlers ובטיחות java script.

שימוש אחד של אובייקט ה- Link והמערך [ ]links הוא כתיבת תוכנית web Crawlers.
תוכנית זו רצה בחלון או מסגרת דפדפן וקוראת דפי web לתוך חלון או מסגרת אחרת. עבור כל דף שהיא קוראת, היא מסתכלת דרך מערך ה- [ ]links ובאופן רקורסיבי עוקבת אחריהם. תוכנית כזו יכולה לשמש, לדוגמא, על מנת ליצור רשימה של כל דפי ה-web הנגישים מדף נתון.

עקב סיבות בטיחות, JS לא מאפשרת תסריט unsigned בחלון או מסגרת על מנת לקרוא את התכונות של חלון אחר או מסגרת אחרת, אלא אם כן שני החלונות מציגים מסמכים שהגיעו מאותו שרת web.

הגבלה זו מונעת פרצת בטיחות חשובה: אם למשל מועסק בחברה עם בטיחות גבוהה, משוטט באינטרנט דרך מחיצה משותפת ומשתמש בדפדפן גם על מנת לדלות מידע על הבעלים באינטרנט המשותף. לא הגבלת הבטיחות, תסריט כלשהו מאתר אינטרנט רנדומלי יכול לחטט במה שנעשה בחלון אחר.
המחבר של התסריט ה"מחטט" לא יכול לאסוף מידע שימושי, ממערך ה- [ ]links של המסמכים, על הבעלים, אך זו יכולה להיות פירצה חמורה של הבטיחות.

Link event handler

אוביקט ה- Link תומך במספר onMouseOver, onClick event handlers.
ה- event handler onClick נקרא כאשר המשתמש מקליק על קישור היפר טקסט. ב-1.1 JS ומעלה, אם הוא מחזיר ערך false, הדפדפן אינו עוקב אחר הקישור. התוויות <A> ו- <AREA> תומכות ב- event handler onMouseOver,
הרץ כאשר מצביע העכבר עובר מעל קישור היפר טקסט. אם משתמשים ב- onMouseOver על מנת להציג הודעה ב- status line, ניתן להשתמש ב- onMouseOut כדי למחוק אותה.

תכונת href ותכונות אחרות של URL של אובייקט ה-Link הן read/write. ניתן לכתוב תוכנית JS שבאופן דינמי מתאימה את היעד של קישורי ההיפר טקסט.
הדוגמא הבאה משתמשת ב-event handler על מנת לכתוב לתכונת ה-href וליצור קישור היפר טקסט רנדומלי :
<A HREF = "about:"
onMouseOver = "status = 'Take a chance... Click me...'; return true;" 
onMouseOut = "status = ' '" 
onClick = "this.href =document.links[Math.floor(Math.random() * document.links.length)]">
	Random Link
</A>		
דוגמא זו ממחישה את כל המאפינים של אובייקט ה- Link שדנו בהם: מערך ה- [ ]links, השימוש ב- event handler Link והקביעה הדינמית של יעד הקישור.
יש לשים לב שבדוגמא תכונת ה- href נקבעת, אבל אינה מפריעה לקרוא את תכונת ה-href של הקישור שנבחר באופן רנדומלי.
במקום זאת, מסתמכת על המתודה ( )toString של אוביקט ה- Link כדי להחזיר את ה- URL.
7. ישומונים ומידע משובץ
מערך ה- [ ]applets של אוביקט ה- Document מכיל אוביקטים המציגים את הישומונים המשובצים במסמך ע"י תווית ה- <APPLET>.
ישומון הוא נייד, תוכנית java מוגנת אשר נטענת על פני האינטרנט ומתבצעת ע"י דפדפן ה- web.
netscape ו- internet explorer תומכים ב- java.
באופן דומה, מערך ה- [ ]embeds מכיל אוביקטים המציגים נתונים המשובצים במסמך ע"י תווית ה- <EMBED>.
מידע משובץ יכול להופיע במספר צורות.
הדפדפן חייב להיות בעל viewer מתאים מותקן או זמין, כך שיוכל להציג את המידע למשתמש.

ב- N, מודולים מיוחדים הידועים כ- "plugins" אחראים להצגת מידע משובץ. באינטרנט אקספלורר מידע משובץ מוצג ע"י הפקדים של ActivX.
את שניהם, plugins ו- ActivX ניתן באופן אוטומטי להוריד מהרשת ולהתקין כשצריך.

שני הדפדפנים מאפשרים ל- JS לקרוא למתודות כלליות (public), לקרוא ולכתוב את התכונות הכלליות של הישומונים של java.
לכל הישומונים יש מספר מתודות public סטנדרטיות שהם יורשים ממחלקת העל, אך המתודות והתכונות המענינות ביותר משתנות על פי כל מקרה.
מנקודת ראות של מחבר הישומון, המתודות והתכונות שהוא מגדיר ידועות. מנקודת ראות אחרת, יש לבחון את מסמכי הישומון כדי לקבוע מה ניתן לעשות איתו.

הדוגמא הבאה מראה אפשרות לשיבוץ הישומון בדף web ע"י התווית <APPLET> ואז קוראת למתודות ( )start ו- ( )stop של הישומון מתוך event handler של JS :
<APPLET NAME="animation" CODE="Animation.class" WIDTH=500 HEIGHT=200>
</APPLET>
<FORM>
   <INPUT TYPE=button VALUE="Start" onClick="document.animation.start()">
   <INPUT TYPE=button VALUE="Stop"  onClick="document.animation.stop()">
</FORM>
כל ישומון מגדיר את שתי מתודות אלו.
אם מניחים שהישומון מבצע סוג של אנימציה ניתן להניח ששני כפתורי ה- HTML קוראים ל- event handlers האומרים לישומון להתחיל ולסיים את האנימציה.
יש לשים לב שנעשה שימוש בתכונת ה- NAME של תווית ה- <APPLET>, כך שניתן להתייחס לישומון ע"י שם, יותר מאשר כאלמנט ממוספר של מערך ה- [ ]applets.

דוגמא זו אינה מדגימה ממש את הכוח של JS בתסריטי ישומונים של java : מתודות java נקראות מתוך event handlers של JS המועברים ללא ארגומנטים ואינם מחזירים ערך.
למעשה, JS יכולה להעביר מספרים, מחרוזות וערכים בוליאניים כארגומנטים למתודות java ויכולה לקבל מספרים, מחרוזות, וערכים בוליאניים כערכים המוחזרים מאותן פונקציות.
ההמרה האוטומטית של מידע בין JS ו- java מאפשרת אינטרקציה הוגנת מלאה.
לדוגמא, ישומון יכול לבצע מתודה המחזירה מחרוזת של קוד של JS.
JS יכולה להשתמש במתודה ( )eval על מנת להעריך את הקוד.

ישומונים יכולים להפעיל מתודות שאינן פועלות על הישומון עצמו, אלא משרתות כצינור בין סביבת script java ו-java.
ישומון יכול להגדיר מתודה הקוראת למתודה ( )System.getProperty עבור ארגומנט מחרוזת נתון.
עובדה זו מאפשרת ל-JS למצוא את הערך של תכונות מערכת של java ולקבוע למשל, את הגרסא של java הנתמכת ע"י הדפדפן.

בעוד שהאלמנטים במערך [ ]applets מציגים ישומוני java, האלמנטים במערך ה- [ ]embeds נוטים להיות מעמיקים יותר ומספר הכללות נעשות לגביהם.
התכונות והמתודות של אובייקטים אלו תלויים בבקר ה- plugin או ה- ActivX שמשתמשים בו על מנת להציג את המידע המשובץ.
יש להוועץ בתיעוד של vendor-specific של בקרה- plugin או ה- ActivX שמשתמשים בו.
בתיעוד יופיע מידע לגבי סוגי התסריטים של JS בהם הבקר תומך, כמו כן יתוארו המתודות והתכונות שניתן להשתמש מתוך JS.