增加多個window.onload事件
P粉555696738
P粉555696738 2023-08-22 18:09:32
0
2
426
<p>在我的ASP.NET使用者控制項中,我正在為<code>window.onload</code>事件新增一些JavaScript程式碼:</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>我的問題是,如果<code>onload</code>事件中已經有內容,那麼這段程式碼就會覆蓋它。我該如何讓兩個使用者控制項都能在<code>onload</code>事件中執行JavaScript程式碼? </p> <p><strong>編輯:</strong>謝謝關於第三方函式庫的資訊。我會記住的。 </p>
P粉555696738
P粉555696738

全部回覆(2)
P粉354602955

仍然有一個醜陋的解決方案(遠不如使用框架或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已經載入完成,但是外部元件(如圖片或樣式表)尚未載入完成,這使得你可以在載入事件觸發之前被呼叫。

P粉253518620

大部分提出的「解決方案」都是針對Microsoft的,或是需要龐大的函式庫。這是一個好的方法。它適用於符合W3C標準的瀏覽器和Microsoft IE。

if (window.addEventListener) // W3C标准
{
  window.addEventListener('load', myFunction, false); // 注意 **不是** 'onload'
} 
else if (window.attachEvent) // Microsoft
{
  window.attachEvent('onload', myFunction);
}
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!