加载页面后延迟javascript和jquery的最终解决方案

加载页面后延迟javascript和jquery的最终解决方案,javascript,jquery,pagespeed,Javascript,Jquery,Pagespeed,正如您可能知道的,希望您推迟使用javascript 谷歌自己推迟你的代码: <script type="text/javascript"> function downloadJSAtOnload() { var element = document.createElement("script"); element.src = "deferredfunctions.js"; document.body.appendChi

正如您可能知道的,希望您推迟使用javascript

谷歌自己推迟你的代码:

<script type="text/javascript">
    function downloadJSAtOnload()
    {
        var element = document.createElement("script");
        element.src = "deferredfunctions.js";
        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>
当然,这是一个很好的解决方案,但它与许多脚本要包含的实际情况、要执行的代码等相去甚远

从一个例子来看:

<html>
    <head>
    </head>
    <body>
        <script type='text/javascript' src='...'></script>
        <script type='text/javascript' src='...'></script>
        <script type='text/javascript' src='...'></script>
        <script type='text/javascript'><!--
            // some code
            $(document).ready(function(){
                // code to execute when the page is ready
            });
        --></script>
    </body>
</html>

问题是:如何将谷歌的建议应用到上述示例中?

如果您让下载JSATONLOAD将几个脚本元素附加到页面,然后调用通常放在$document.readyfunction{…}中的代码,那么谷歌示例可以用于多个脚本;。该代码可以显式调用,也可以是最后一个下载的文件。

如果您让下载的JSATONLOAD在页面中附加几个脚本元素,然后调用通常放在$document.readyfunction{…}中的代码,那么Google示例可以用于多个脚本;。该代码可以被显式调用,也可以是最后一个下载的文件。

考虑到第二个示例需要加载jquery才能执行,您不会获得太多好处。加载一些JS,这样你就可以推迟加载JS了。你是对的,Marc,但是Google PageSpeed没有这么说。它继续告诉我建议:推迟JavaScript执行直到页面加载。您认为我可以忽略这一点吗?考虑到您的第二个示例需要加载jquery才能执行,您不会得到太多好处。加载一些JS,这样你就可以推迟加载JS了。你是对的,Marc,但是Google PageSpeed没有这么说。它继续告诉我建议:推迟JavaScript执行直到页面加载。你认为我可以忽略这个吗?我试着用这个方法。所有jquery脚本都可以进行幻灯片显示、映射和表单验证,但我得到了未捕获的引用错误:$is not defined error。这就像在所有脚本之前执行ready块,但所有操作都是一样的。怎么可能?你能编辑这个问题以包含你尝试过的代码吗?另外,请看一些相关问题,它们与此非常相似,可能会提供一些想法。已编辑。我考虑过所展示的解决方案,但它只能应用于一个脚本,它不符合我的需要-也许我遗漏了该代码的一些用法?我再次编辑,以保持问题的清晰性和独立性。我在中继续论证,我尝试应用这个解决方案。所有jquery脚本都可以进行幻灯片显示、映射和表单验证,但我得到了未捕获的引用错误:$is not defined error。这就像在所有脚本之前执行ready块,但所有操作都是一样的。怎么可能?你能编辑这个问题以包含你尝试过的代码吗?另外,请看一些相关问题,它们与此非常相似,可能会提供一些想法。已编辑。我考虑过所展示的解决方案,但它只能应用于一个脚本,它不符合我的需要-也许我遗漏了该代码的一些用法?我再次编辑,以保持问题的清晰性和独立性。我已经把这个论点继续下去了