1. 程式人生 > >js阻礙DOM加載

js阻礙DOM加載

1.0 clas ext pos head style inf get scale

今天用谷歌做了個小測試

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    1
    <br />
    <script>
        alert(
1); </script> 2 </body> </html>

根據頁面的加載順序是從上到下的,這個頁面的執行順序應該是:顯示1 --> altert(1) --> 顯示2

可是打開網頁的時候居然是先彈出 1,然後 顯示 1 2。給人一種執行順序不符合正常規律的錯覺。

技術分享圖片

技術分享圖片

然後使用火狐瀏覽器測試,發現又是按照預期顯示了。

技術分享圖片

技術分享圖片

接著又測試了safari 瀏覽器,顯示的跟谷歌一樣。這就讓人很納悶了。然後對代碼又進行了相應的改動,如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    1
    <br />
    <script>
        alert(document.getElementsByTagName(
‘body‘)[0].innerText); document.getElementsByTagName(‘body‘)[0].innerText = ‘a‘; alert(document.getElementsByTagName(‘body‘)[0].innerText); </script> 2 </body> </html>

谷歌測試:

技術分享圖片

技術分享圖片

技術分享圖片

火狐測試:

技術分享圖片

技術分享圖片

技術分享圖片

safari測試

技術分享圖片

技術分享圖片

技術分享圖片

所以:之所以造成執行順序錯亂的假象是因為瀏覽器渲染的差異造成的。看來還是火狐君比較可愛。

js阻礙DOM加載