2011-08-21 75 views
13

onLoad/onPageShow之前是否有任何事件處理程序? onLoad的問題在於,如果顯示中有任何更改,則頁面在完全加載之前不會更改,然後腳本將運行。確保它儘快運行的最佳方法是什麼?onload之前的Javascript?

+2

同步內聯腳本元素將在這些事件之前運行。 – 2011-08-21 06:04:16

回答

21

如果您在<script>標記內放入了Javascript 語句(而不是函數定義),它們將在頁面加載期間執行 - 在onLoad事件觸發之前執行。

<html> 
<body> 
    <h2>First header</h2> 
    <script type="text/javascript"> 
    alert("Hi, I am here"); 
    document.write("<h3>This is Javascript generated</h3>"); 
    </script> 
    <h2>Second header</h2> 
</body> 
</html> 

需要說明的是,因爲這些元素可能不會呈現呢,讓你改變頁面的方式是能力有限,你不能搜索由ID元素。

底線:可能,不推薦。

我通常在這種情況下做如下:

  • 做出可能改變無形的(通過style="visibility:hidden;")頁面的部分;
  • Make onLoad運行Javascript代碼,更改頁面,然後將該零件的可見性設置爲visibility:visible
+0

我認爲只要元素之前已經定義了文檔,大多數瀏覽器就會正確處理getElemementById然而,直到onload被指出才能保證DOM,所以它是一個斜率... :) – 2011-08-21 06:16:42

+2

您也可以使用DOMContentloaded事件,該事件在DOM完全加載但不是全部媒體時觸發。 OnLoad僅在加載完所有媒體後觸發。 – citadelgrad

-1

簡單的答案是將函數調用放在頁面主體內的腳本標記內的DOM元素之後。我有這個問題使用JavaScript函數來設置我的導航菜單鏈接,但是我有一個谷歌地圖元素,導致頁面加載速度很慢。在這個特定的頁面上,我在鏈接後面運行腳本。這是一個解決方案,也許不是最好的,但它的工作原理。希望這可以幫助。