הפעלת כמה מתודות ב – onload של java script

22 בדצמבר 2009

תגיות: ,
2 תגובות

 


נתקלתי בבעייה הבאה

 

ב – Master Page כתבתי את הקוד הבא:

 



<body onload="a()">


 



function a() {


    alert("a");


}


 

 

באחד מהדפים שמשתמש ב – Mater Page כתבתי את הדבר הבא:

 



<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">


 


    <script>


        onload = function b() {


            alert("b");


        }


    </script>


 


</asp:Content>


 

 

הבעייה היא שהמתודה b לעולם לא תופעל מכיון שההגדרה של ה – body onload דורסת את ההגדרה הקודמת.

 

שאלתי את פיני והוא הפנה אותי לכאן. מה שהם מציעים זה את הדבר הבא:

 

נכתוב את המתודה הזאת:



function addLoadEvent(func) {


    var oldonload = window.onload;


    if (typeof window.onload != 'function') {


        window.onload = func;


    }


    else {


        window.onload = function() {


            if (oldonload) {


                oldonload();


            }


            func();


        }


    }


}


 

כעת במקום להרשם ל – onload תמיד נקרא למתודה הזאת

 

ב – Master נכתוב

 



function a() {


    alert("a");


}


 


addLoadEvent(a);


 

ובדף נכתוב

 



function b() {


    alert("b");


}


addLoadEvent(b);


 

והכל על מקומו יבוא בשלום.

ותודה לפיני על העזרה

הוסף תגובה
facebook linkedin twitter email

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *

2 תגובות

  1. Rotem Bloom22 בדצמבר 2009 ב 15:28

    If you are using ASP.NET you can add the ScriptManager to your page and then you can use the JS function:
    Sys.UI.DomEvent.addHandler

    so it will be something like:

    This will call to your 2 function in page load.
    Enjoy Rotem

    הגב
  2. Shlomo22 בדצמבר 2009 ב 21:41

    נחמד – שכחתי מזה, תודה

    הגב