【问题标题】:Can't defer javascript and CSS together不能同时推迟 javascript 和 CSS
【发布时间】:2014-10-16 19:08:45
【问题描述】:

我有一个通过 js 支持 IE8 的 html5 主题,但是我的页面无法通过 Google pagespeed 测试。我需要推迟 javascript 和 CSS。我的页面有以下标题:

<!--[if lte IE 8]><script src="css/ie/html5shiv.js"></script><![endif]-->
<script src="js/jquery.min.js"></script>
<script src="js/jquery.dropotron.min.js"></script>
<script src="js/jquery.scrollgress.min.js"></script>
<script src="js/skel.min.js"></script>
<script src="js/skel-layers.min.js"></script>
<script src="js/init.js"></script>
<noscript>
<link rel="stylesheet" href="css/skel.css" />
<link rel="stylesheet" href="css/style.css" />
<link rel="stylesheet" href="css/style-wide.css" />
</noscript>
<!--[if lte IE 8]><link rel="stylesheet" href="css/ie/v8.css" /><![endif]-->
</head>

我尝试使用以下代码进行延迟,但我的页面没有正确显示。我不太了解javascript,但我认为浏览器只呈现脚本,而不是css。

<!-- defer.js begins-->
<script type="text/javascript">
    function downloadJSAtOnload() {
        (function(scripts) {
             var i = 0,
                 l = scripts.length;
            for (; i<l; ++i ){
                var element = document.createElement("script");
                element.src = scripts[i];
                document.body.appendChild(element);
            }
        })(['js/jquery.min.js','js/jquery.dropotron.min.js', 'js/jquery.scrollgress.min.js', 'js/skel.min.js', 'js/skel-layers.min.js', 'js/init.js']);
    }

    if (window.addEventListener)
        window.addEventListener("load", downloadJSAtOnload, false);
    else if (window.attachEvent)
        window.attachEvent("onload", downloadJSAtOnload);
    else window.onload = downloadJSAtOnload;
</script>
<!-- defer.js ends -->
</body>

这是我的文件:

如何推迟 javascript 和 css?

【问题讨论】:

    标签: javascript jquery html performance


    【解决方案1】:

    尝试从标题中取出脚本标签,然后将它们添加到结束正文标签之前,或者在脚本标签上使用仅由现代浏览器使用的deferasync 属性。 :)

    【讨论】:

    【解决方案2】:

    希望这个对 js 文件有帮助

    <script type="text/javascript">
    function downloadJSAtOnload() {
    var element = document.createElement("script");
    
    element.src = "js/jquery.min.js";
    document.body.appendChild(element);
    }
    
    if (window.addEventListener)
    window.addEventListener("load", downloadJSAtOnload, dfalse);
    else if (window.attachEvent)
    window.attachEvent("onload", downloadJSAtOnload);
    else window.onload = downloadJSAtOnload;
    </script>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-05
      • 1970-01-01
      相关资源
      最近更新 更多