שלח תשובה

זירת השאלות

555
צפיות
3
תשובות

שאלה לגבי בניית תפריט מותאם אישית

,‏ 28 באוגוסט, 2004

בניתי דף HTML משולב עם JS המאפשר לי ליצור תפריט מותאם אישית בעת לחיצה על לחצן העכבר הימני.
כתובת: http://planet.nana.co.il/ivg/index.html
הבעיה היא שזה עובד רק באקספלורר, ולא במוזילה.
לאחר בדיקות, מצאתי כי הפקודות הבעייתיות הן דווקא אלה שבודקות את הנקודות של העכבר:
קוד:
lastX=window.event.clientX;lastY=window.event.clientY;

הפקודות האלה נמצאות בתגית body במאפיין oncontextmenu, בשורה 94.
אני לא מבין מה הבעיה עם 2 הפקודות האלה.
אשמח לקבל עזרה.

תודה מראש!

תגיות:

3 תשובות

  1. ניר טייב הגיב:

    במוזילה/אופרה ודפדפנים שהם לא IE
    ניהול אירועים הולך לפי פרמטר ששולחים לפונקציה
    זאת אומרת שאין אובייקט event  אלא פרמטר פונקציה שהוא כביכול אובייקט
    למשל כדי ליצור ALERT שייתן את ערכי ה-X וה-Y של העכבר בזמן לחיצה אפשר לעשות כך:

    <script type="text/javascript">
    onclick = function(e){
    alert("x coor is: "+e.clientX+'n y cor is: "+e.clientY);
    }
    </script>

    כדי שזה יתאים גם לאקספלורר אפשר להכניס התניה פשוטה שתעשה שהמשתנה e יכיל ריפרנס לאובייקט event

    <script type="text/javascript">
    onclick = function(e){
    if (navigator.appName=="Microsoft Internet Explorer"){
    e=event;
    }
    alert("x coor is: "+e.clientX+'n y cor is: "+e.clientY);
    }
    </script>

    הצעה
    תכניס קודים לפונקציות ובאירועים תכניס רק קריאה לפונקציה
    זה יעזור לך מאוד בשלוש דברים:
    1. הפרדת קוד מתוכן
    2. נוחות הדיבוג
    4. לא יעבור בהכרח דרך מפרש ה-XML/SGML (תלוי אם אתה שם הערות XML סביב קוד ה-JS שלך)

  2. onclick = function(e){ ??? זה חדש
    אבל זה לא עובד לי.
    אשמח לקבל הסבר נוסף על שיוך פונקציות לארועים בשיטה הזו


    onclick = function(e){
    }

    ומאיפה IE יקבל את הפרמטר e ?

שלח תשובה