Heim  >  Fragen und Antworten  >  Hauptteil

Fügen Sie mehrere window.onload-Ereignisse hinzu

<p>In meinem ASP.NET-Benutzersteuerelement füge ich JavaScript-Code zum Ereignis <code>window.onload</code> hinzu: </p> <pre class="brush:php;toolbar:false;">if (!Page.ClientScript.IsStartupScriptRegistered(this.GetType(), onloadScriptName)) Page.ClientScript.RegisterStartupScript(this.GetType(), onloadScriptName, "window.onload = function() {myFunction();};", true);</pre> <p>Mein Problem ist, dass dieser Code diesen überschreibt, wenn das Ereignis <code>onload</code> bereits vorhanden ist. Wie kann ich beiden Benutzersteuerelementen die Ausführung von JavaScript-Code im <code>onload</code>-Ereignis ermöglichen? </p> <p><strong>Herausgeber: </strong>Vielen Dank für die Informationen zu Bibliotheken von Drittanbietern. Ich werde mich erinnern. </p>
P粉555696738P粉555696738397 Tage vor388

Antworte allen(2)Ich werde antworten

  • P粉354602955

    P粉3546029552023-08-23 14:45:25

    仍然有一种丑陋的解决方案(远不如使用框架或addEventListener/attachEvent)是保存当前的onload事件:

    function addOnLoad(fn)
    { 
       var old = window.onload;
       window.onload = function()
       {
           old();
           fn();
       };
    }
    
    addOnLoad(function()
    {
       // 在这里编写你的代码
    });
    addOnLoad(function()
    {
       // 在这里编写你的代码
    });
    addOnLoad(function()
    {
       // 在这里编写你的代码
    });

    请注意,像jQuery这样的框架将提供一种在DOM准备就绪时执行代码的方法,而不是在页面加载时执行。

    DOM准备就绪意味着你的HTML已经加载完成,但是外部组件(如图片或样式表)尚未加载完成,这使得你可以在加载事件触发之前被调用。

    Antwort
    0
  • P粉253518620

    P粉2535186202023-08-23 10:50:31

    大部分提出的“解决方案”都是针对Microsoft的,或者需要庞大的库。这是一个好的方法。它适用于符合W3C标准的浏览器和Microsoft IE。

    if (window.addEventListener) // W3C标准
    {
      window.addEventListener('load', myFunction, false); // 注意 **不是** 'onload'
    } 
    else if (window.attachEvent) // Microsoft
    {
      window.attachEvent('onload', myFunction);
    }

    Antwort
    0
  • StornierenAntwort