ראשי > תפריטי dhtml נשלפים > גיבור הפעולה

גיבור הפעולה

function popIndex(topic,mouseX,mouseY)


if (popWin.closed) 
   {popIt();popWin.blur();} 
if (popWin.setupComplete) 
  {popIndex2(topic,mouseX,mouseY)} 
}

function popIndex2(topic,mouseX,mouseY)
{   
  
  if (clearPop!=0)
  	{popWin.clearTimeout(clearPop);
	popWin.clearTimeout(popWin.clearPop2);}
  clearPop=popWin.setTimeout
  	("self.resizeTo(0,0);
	opener.focus()",5000);
  
//clear any open pop topic
  if (opentopic!=null)
  { var oldobjName="['"+opentopic+"']";
    eval(obj+oldobjName+visibility+invisible);} 
  
  var objName="['"+topic+"']";
  
  //adjust window dimensions to match popup index
  if (document.all)
  // { popWin.resizeTo
  	(eval(obj+objName+posWidth)+30,eval(obj+objName+posHeight)+50) }
  {popWin.resizeTo(250,popWin.document.all[topic].clientHeight+45);}
  else { popWin.innerHeight=eval(obj+objName+posHeight); }
  
  eval(obj+objName+visibility+visible);
  opentopic=topic;
  
    popWin.moveTo(mouseX+50,mouseY-25);
  popWin.focus();
}

כעת אנו מתקרבים למרכז הפעולה של הסקריפט. Popindex() היא הפונקציה שנקראת כאשר המשתמש מעביר את מצביע העכבר מעל שם נושא בתוכן העניינים. בצורה אידיאלית, זה יוביל להופעת התפריט הנשלף. הפונקציה popIndex() מהווה הגנה, שמבטיחה שהתנאים מתאימים לפני שתתבצע השליפה.

PopIndex() בודקת במפורש שני תנאים:

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

שנית, חיוני לוודא שכל התפריטים בחלון כבר הוגדרו (זוכרים את הפונקציה setup() בקובץ popups.html?). הסקריפט ב-popups.html יקבע את המשתנה setupComplete להיות true כאשר התפריטים מוכנים, וכך נמשיך ונשלוף את התפריט רק אם הוא כבר הוגדר.

הפונקציה הבאה, popIndex2(), היא הקפטן האמיתי של מרכז בקרת המשימה, והיא עושה את העבודה השחורה. ראשית, popIndex2() קובעת את פרקי הזמן ששולטים על העלמות התפריטים בהתאם לכלל מס' 1. אם תפריט של נושא אחר כבר נשלף, התפריט הזה ייסגר ויוכנס לחלון התפריט. גודל חלון התפריט מותאם לגודל התפריט. באינטרנט אקספלורר יש התאמה גם באורך וגם ברוחב, בנטסקייפ יש התאמה אנכית בלבד, בגלל שכיוון חלון אופקי גורם לטעינה מחדש של העמוד ולתוצאות שליליות.

הכל מוכן להרצה. השכבה שמכילה את תפריט הנושאים נראית לעין ומשתמשת בטכניקת eval() שמסתמכת על מושגי dhtml שמוגדרים ע"י crossBrowser(). הנושא הפתוח כרגע רשום תחת המשתנה opentopic, והחלון ממוקם בצורה נכונה על המסך בצורה יחסית למיקום העכבר.

השורה האחרונה של popIndex2() גורמת לחלון התפריט הנשלף להופיע.

popWin.focus();

מרגע שחלון מסוים נכנס לפוקוס, הסקריפטים שלו, שמוגדרים בקובץ popups.html , הם ששולטים בו. 

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