javascript - 卡在页面加载 : Too much Javascript?

标签 javascript jquery html audio lightbox

我终于修复了我的一些 Javascript 问题,并且现在只使用了一个库(以前很疯狂)。

页面加载有一点点挂起,所以我想看看你们是否注意到我可以在我的脚本中提高效率。它有点到处都是,所以我可能有一些不必要的功能。建议?

提前致谢!

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="player/src/jquery.ubaplayer.js"></script>
<script>
$(document).ready(function() { 
    $("#ubaPlayer").ubaPlayer({
        codecs: [{name:"MP3", codec: 'audio/mpeg;'}]                
    });

    $('a[class=video]').click(function () {
        if ($("#ubaPlayer").ubaPlayer("playing") === true) {
            $("#ubaPlayer").ubaPlayer("pause");
        }
        return false;
    });
})
</script>
<script type="text/javascript" src="/fancybox/source/jquery.fancybox.pack.js?v=2.1.4">                </script>
<script type="text/javascript" src="/fancybox/source/helpers/jquery.fancybox-media.js?v=1.0.5"></script>
<script type="text/javascript">
jQuery(document).ready(function() {

$(".video").click(function() {
    $.fancybox({
        'padding'       : 0,
        'autoScale'     : false,
        'transitionIn'  : 'none',
        'transitionOut' : 'none',
        'title'         : this.title,
        'width'         : 640,
        'height'        : 385,
        'href'          : this.href.replace(new RegExp("watch\\?v=", "i"), 'v/'),
        'type'          : 'swf',
        'swf'           : {
        'wmode'             : 'transparent',
        'allowfullscreen'   : 'true'
        }
    });

    return false;
});
});
</script>

</head>

最佳答案

仅在此代码片段中,您就有四个外部脚本和两个内联脚本 block 。

最小化 HTTP 请求的数量恰好是 Web 性能的黄金法则。如果可能,尝试将外部脚本组合成一两个 JS 文件。

另一个奇怪的事情是你的内联脚本阻止了两个绑定(bind)函数到 jQuery 的 .ready()。 .为什么没有一个功能可以同时做这两件事呢?请参阅下面的示例:

$(document).ready(function() { 
    $("#ubaPlayer").ubaPlayer({
        codecs: [{name:"MP3", codec: 'audio/mpeg;'}]                
    });

    $('a[class=video]').click(function () {
        if ($("#ubaPlayer").ubaPlayer("playing") === true) {
            $("#ubaPlayer").ubaPlayer("pause");
        }
        return false;
    });

    $(".video").click(function() {
        $.fancybox({
            'padding'       : 0,
            'autoScale'     : false,
            'transitionIn'  : 'none',
            'transitionOut' : 'none',
            'title'         : this.title,
            'width'         : 640,
            'height'        : 385,
            'href'          : this.href.replace(new RegExp("watch\\?v=", "i"), 'v/'),
            'type'          : 'swf',
            'swf'           : {
                'wmode'             : 'transparent',
                'allowfullscreen'   : 'true'
            }
        });

        return false;
    });
})

我注意到的另一部分是您有一个 </head> JavaScript 下方的标记。我之前说过这让其他人很生气,但我强烈建议将脚本移到 </body> 之前。而是标记。页面加载受脚本加载和解析的影响,因此如果您可以将其推迟到以后,那么至少可以更好地感知页面加载。

关于javascript - 卡在页面加载 : Too much Javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16291088/

相关文章:

jQuery - 悬停很多次会破坏 javascript?

javascript - 如何选择数据列表的描述

javascript - 将 imagegrabscreen php 函数包含到按钮 onclick 中,无需刷新页面

javascript - 如何通过书签将div添加到网页?

javascript - 获取嵌套数组中特定键的每个值的总金额

javascript - 为什么我的 readState 逻辑中 document.body 为 null?

javascript - 是否可以将图像文件合并到一个 blob 中

javascript - document.getElementById 每次都返回 null 或未定义

javascript - Parsley.js - 仅验证数字的可选输入

javascript - jQuery 数据表未捕获类型错误 : Cannot read property 'length' of undefined