相关疑难解决方法(0)

如何推迟内联Javascript?

我有以下HTML代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="https://cdn.jsdelivr.net/blazy/1.8.2/blazy.min.js" defer></script>
    <script src="https://code.jquery.com/jquery-2.1.4.min.js" integrity="sha256-8WqyJLuWKRBVhxXIL1jBDD7SDxU936oZkCnxQbWwJVw=" crossorigin="anonymous" defer></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/lightbox2/2.9.0/js/lightbox.min.js" defer></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous" defer></script>
    <!-- 26 dec flexslider js -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/flexslider/2.6.3/jquery.flexslider.min.js" defer></script>
    <script defer>
    (function($) {
        $(document).ready(function() {
            //do something with b-lazy plugin, lightbox plugin and then with flexslider
        });
    })(jQuery);
    </script>
</head>
<body>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我收到一个错误,说没有定义jQuery.现在,即使我从我的内联JS代码中删除defer,它也说jQuery是未定义的.出于某种原因,我必须将jQuery插件保留在头部并保持我的JS代码内联.我的问题是:

  1. 为什么内联Javascript代码在defer属性存在时不会延迟?

  2. 有没有办法模仿我的内联Javascript代码的延迟行为?如果需要,我可以将它放在body标签的末尾.

html javascript jquery deferred-execution

44
推荐指数
5
解决办法
3万
查看次数

推迟加载Facebook Like Button Script

Google pagespeed正在抱怨我的facebook就像按钮脚本一样.我怎样才能推迟脚本?

在初始页面加载期间解析45KiB的JavaScript.推迟解析JavaScript以减少页面呈现的阻塞. http ://static.ak.facebook.com/.../xd_arbiter.php?...(内联JavaScript的21KiB)https://s-static.ak.facebook.com/.../xd_arbiter.php?...(内联JavaScript的21KiB)http://www.facebook.com/.../like.php?...(内联JavaScript的3KiB)

这是我正在使用的代码,我将它加载到页面页脚的.js文件中.

(function(d,s,id){
        var js,fjs = d.getElementsByTagName(s)[0];
        if(d.getElementById(id)){return;}
        js=d.createElement(s);
        js.id=id;
        js.async=true;
        js.defer=true;//THIS DOES NOT APPEAR TO SATISFY PAGESPEED
        js.src="//connect.facebook.net/en_US/all.js#xfbml=1";
        fjs.parentNode.insertBefore(js,fjs);
    }
    (document, "script", "facebook-jssdk")
);
Run Code Online (Sandbox Code Playgroud)

结果在以下脚本标记中(通过Chrome的检查器):

    <script 
    id="facebook-jssdk" 
    async="" 
    defer="" 
    src="//connect.facebook.net/en_US/all.js#xfbml=1"></script>
Run Code Online (Sandbox Code Playgroud)

jquery facebook deferred-loading

6
推荐指数
1
解决办法
4552
查看次数