2012-08-02 179 views
0

我遇到了一個問題Mysite,導航欄是javascript和jquery的一些部分,我玩過一些代碼以嘗試在頁面查看前加載導航欄,但似乎無法看到找到正確的代碼。實現這一目標的正確方法是什麼?在頁面加載之前執行Javascript

+6

顯示你的代碼。 – TRR 2012-08-02 07:59:05

回答

-2

將您的腳本包含到<head></head>中,這可能有所幫助。但是,仍然必須在任何JS被解僱之前加載DOM。

+1

DOM不**必須在JavaScript執行前加載。 DOM **必須在JavaScript可以與之交互之前加載,但這不等同於不執行任何操作。 – 2012-08-02 08:04:30

+0

他正在嘗試jqueryfy他的菜單 - 如果沒有準備好DOM,該如何工作? – saibotd 2012-08-02 09:44:53

0

就我所知,在頁面啓動之前無法真正加載HTML。您應該使用JQUERY Events等待顯示工具欄,直到它被加載。或者,也許只需將「display:none」設置爲工具欄,然後使用window.onload事件添加所有效果後顯示工具欄。

3

將執行該腳本whenver頁面加載

<script type="text/javascript"> 
    window.onload=body_load; 

    function body_load() 
    { 

    dosomethingwithelementA(); 

    } 

    </script> 

    <div id="A"></div> 

或U使用jQuery做每當DOM準備

$(document).ready(function() 
{ 
    dosomethingwithelementA(); 

}); 
+0

我相信問題不是如何推遲JS執行,直到整個頁面加載後,而是如何實際阻止加載頁面,直到JS與導航元素交互。這段代碼沒有做任何這些事情 – 2012-08-02 08:36:35

+0

感謝這一點,但Elias是安靜的權利。我希望頁面等到JS加載完畢。然後在JS加載之後調用頁面的主體。 – 2012-08-02 21:10:35

2

有幾件事情,可以幫助:

  1. <script>標籤放在導航元素的正下方,如果是jQuery代碼,不要使用$(document).ready(function(){包裝器,只要需要加載頁面,BC就會推遲執行。
    或者,不要等待整個文檔準備好,實際上沒有任何東西阻止您執行諸如$('#navContainer').ready(function(){之類的操作,只要導航元素已加載就執行jQuery位。

  2. 這就是說,你不能真正確定什麼時候加載什麼,這有點不在你的手中。但是,我看到人們使用像style="display:none;"這樣的屬性呈現HTML,然後在完成需要完成/看到的任務時使用JavaScript刪除屬性。下行:一如既往:禁用JS的瀏覽器根本看不到任何內容。啊,好吧,擰他們

  3. 還有更詳細的答案。例如:爲您的頁面提供一個空的內容div,並且只提供導航並將onload$(doc).ready事件綁定到ajax調用以獲取您網站的實際內容。但是,海事組織是一個臨界的瘋狂解決方法。

挑選任何以上選項,或使用所有的人都在一起

相關問題