js裏面windows.onload函數不執行

當我在script標籤內寫完window.onload=function(){}函數時,可是在運行界面是並無運行這個函數,此我便在網上找了一下,並總結了如下幾種狀況javascript

  • 只有一個函數window.onload=functtion(){}

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <script src="./js/jquery-3.3.1.js"></script>
    <script type='text/javascript'>

        window.onload = function () {
            alert("頁面加載完成====》onload");
        }

    </script>
</head>
<body>
     /***/
</body>
</html>

頁面加載完畢以後完美運行此函數html

  • 在window.onload=functtion(){}函數以外,body還有onload屬性,而且屬性值爲"after()"

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <script src="./js/jquery-3.3.1.js"></script>
    <script type='text/javascript'>

        window.onload = function () {
            alert("頁面加載完成====》onload");
        }

        function after() {
            alert("頁面after====》onload");
        }
    </script>
</head>

     <body onload="after()">

</body>
</html>

此時只會執行body元素裏面的onload屬性對應的函數,不會去執行window.onload事件。因此,當指定了body的onload之後,window.onload就無效了java

  • window.onload=functtion(){}函數出如今body屬性的後面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <script src="./js/jquery-3.3.1.js"></script>
    <script type='text/javascript'>

        function after() {
            alert("頁面after====》onload");
        }
    </script>
</head>

     <body onload="after()">

</body>
  <script type='text/javascript'>

        window.onload = function () {
            alert("頁面加載完成====》onload");
        }

    </script>
</html>

此時執行的函數就是window.onload事件對應的函數jquery

關於執行順序的小測試

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>   

<head>   
    <script type="text/javascript"> 
       alert('a');

       window.onload=function () {  
       alert('b');  
         } ;

       alert('c');
   </script> 
   </head>   
   <body onload="alert('d');">  

   </body>   

</html>

彈出層結果爲:a、c、d函數

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>   

<head>   

   </head>   
   <body onload="alert('d');">  

   </body>   
     <script type="text/javascript"> 
       alert('a');

       window.onload=function () {  
       alert('b');  
         } ;

       alert('c');

   </script> 
</html>

彈出層結果爲:a、c、b測試

總結

  • onload事件只能執行一個

  • 在程序中設置一個onload的事件時

  1. 只設置body onload屬性中能夠響應事件 
  2. 只設置window.onload函數中也能夠響應事件
  • 在程序中設置兩個onload的事件時

  1. window.onload在head頭部中出現的狀況)只執行body onload屬性的內容
  2. window.onload出如今body onload屬性的後面的狀況.等加載完body的頁面,再執行onload事件,後面onload事件是能夠覆蓋前面的body onload屬性.


不管順序怎麼樣,除了onload事件的代碼,都是按照順序(從上到下)來進行的

備註:onunload:用戶退出界面時的事件spa

相關文章
相關標籤/搜索