簡體   English   中英

在body標簽之前的腳本中使用'defer'屬性

[英]Using 'defer' attribute with scripts before the body tag

我在Google網頁測試工具上運行了我的網頁,並建議我使用'defer'或'async'屬性來消除渲染阻止JS。 我的HTML是這樣的:

<!DOCTYPE html>
<html>

<head lang="en">
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>My Page</title>
    <link href="https://mycdn.com/style.css" rel="stylesheet">
</head>

<body>
    <div id="app-container"></div>
    <script type="text/javascript" src="https://mycdn.com/shared.js"></script>
    <script type="text/javascript" src="https://mycdn.com/main.js"></script>
</body>

</html>

因為,我的腳本在'body'標簽關閉之前就包含了,而不是在'head'中,它們真的阻塞了嗎? 在解析結束的“ html”之前,不會進行繪制嗎?

使用異步或延遲或將腳本移動到文件底部並不總是在不同的瀏覽器上都有效,一種建議的外部腳本加載方式是通過以下方式加載該腳本:將這段代碼放在身體標簽。

<script type="text/javascript">
  function downloadJSAtOnload(){
    var element = document.createElement("script");
    element.src = "defer.js"; // Replace "defer.js" with your url or filename
    document.body.appendChild(element);
  }
  if (window.addEventListener) window.addEventListener("load", downloadJSAtOnload, false);
  else if(window.attachEvent) window.attachEvent("onload", downloadJSAtOnload);
  else window.onload = downloadJSAtOnload;
</script>

看到這里更多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM