Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有哪些方法可以最大限度地减少来自外部javascript调用的页面等待?_Javascript - Fatal编程技术网

有哪些方法可以最大限度地减少来自外部javascript调用的页面等待?

有哪些方法可以最大限度地减少来自外部javascript调用的页面等待?,javascript,Javascript,可以使用哪些技巧来阻止对各种在线服务的javascript调用减慢页面加载 显而易见的解决方案是在页面底部做所有的JavaScript调用,但是一些调用需要在顶部和中间发生。我想到的另一个想法是使用iframe 你有没有想过,如果一个站点充满了外部加载的javascript,那么它的速度太慢,以至于不能发布apache,并且在高负载下会导致停机?有什么窍门吗?不容易解决。在某些情况下,可以将外部文件合并到单个单元中并对其进行压缩,以最小化HTTP请求和数据传输。但是使用这种方法,您需要从主机提供

可以使用哪些技巧来阻止对各种在线服务的javascript调用减慢页面加载

显而易见的解决方案是在页面底部做所有的JavaScript调用,但是一些调用需要在顶部和中间发生。我想到的另一个想法是使用iframe


你有没有想过,如果一个站点充满了外部加载的javascript,那么它的速度太慢,以至于不能发布apache,并且在高负载下会导致停机?有什么窍门吗?

不容易解决。在某些情况下,可以将外部文件合并到单个单元中并对其进行压缩,以最小化HTTP请求和数据传输。但是使用这种方法,您需要从主机提供新的javascript文件,这并不总是可能的


我看不出iframes能解决这个问题。。。你能详细说明一下吗?

不容易解决。在某些情况下,可以将外部文件合并到单个单元中并对其进行压缩,以最小化HTTP请求和数据传输。但是使用这种方法,您需要从主机提供新的javascript文件,这并不总是可能的


我看不出iframes能解决这个问题。。。请详细说明一下好吗?

如果您使用的是第三方JavaScript框架/工具包/库,它可能提供了一个函数/方法,允许您在DOM完全加载后执行代码,例如,提供。类似地,通过将函数直接传递给jQuery对象,可以访问提供或其

如果您坚持使用纯JavaScript,那么诀窍就是使用window.onload事件处理程序。虽然这最终将完成同样的事情,window.onload在页面和页面上的所有内容(包括图像)完全加载后执行,而前面提到的库在加载图像之前检测DOM准备就绪的第一刻

如果您需要从头部的脚本访问DOM,这也是将脚本添加到文档末尾的首选替代方法

例如,使用window.onload:

<html>
    <head>
        <title>Test Page</title>
        <script type="text/javascript">
            window.onload = function () {
                alert(document.getElementsByTagName("body")[0].className);
            };
        </script>
    <style type="text/css">
        .testClass { color: green; background-color: red; }
    </style>
    </head>
    <body class="testClass">
        <p>Test Content</p>
    </body>
</html>
第一个示例中的脚本经过修改以使用此方法:

window.addOnLoad(function () {
    alert(document.getElementsByTagName("body")[0].className);
});
修改为使用Dojo:

dojo.addOnLoad(function () {
    alert(document.getElementsByTagName("body")[0].className);
});
修改为使用jQuery:

$(function () {
    alert(document.getElementsByTagName("body")[0].className);
});
所以,现在您可以在页面加载时执行代码了,您可能需要动态加载外部脚本。与上一节一样,大多数主要的框架/工具包/库都提供了这样做的方法

或者,您也可以推出自己的:

if (!window.addScript)
{
    window.addScript = function (src, callback) {
        var head = document.getElementsByTagName("head")[0];
        var script = document.createElement("script");
        script.src = src;
        script.type = "text/javascript";
        head.appendChild(script);
        if (typeof callback == "function") callback();
    };
}

window.addOnLoad(function () {
    window.addScript("example.js");
});
使用Dojo:

使用jQuery:


如果您使用的是第三方JavaScript框架/工具包/库,它可能提供了一个函数/方法,允许您在DOM完全加载后执行代码,例如,提供。类似地,通过将函数直接传递给jQuery对象,可以访问提供或其

如果您坚持使用纯JavaScript,那么诀窍就是使用window.onload事件处理程序。虽然这最终将完成同样的事情,window.onload在页面和页面上的所有内容(包括图像)完全加载后执行,而前面提到的库在加载图像之前检测DOM准备就绪的第一刻

如果您需要从头部的脚本访问DOM,这也是将脚本添加到文档末尾的首选替代方法

例如,使用window.onload:

<html>
    <head>
        <title>Test Page</title>
        <script type="text/javascript">
            window.onload = function () {
                alert(document.getElementsByTagName("body")[0].className);
            };
        </script>
    <style type="text/css">
        .testClass { color: green; background-color: red; }
    </style>
    </head>
    <body class="testClass">
        <p>Test Content</p>
    </body>
</html>
第一个示例中的脚本经过修改以使用此方法:

window.addOnLoad(function () {
    alert(document.getElementsByTagName("body")[0].className);
});
修改为使用Dojo:

dojo.addOnLoad(function () {
    alert(document.getElementsByTagName("body")[0].className);
});
修改为使用jQuery:

$(function () {
    alert(document.getElementsByTagName("body")[0].className);
});
所以,现在您可以在页面加载时执行代码了,您可能需要动态加载外部脚本。与上一节一样,大多数主要的框架/工具包/库都提供了这样做的方法

或者,您也可以推出自己的:

if (!window.addScript)
{
    window.addScript = function (src, callback) {
        var head = document.getElementsByTagName("head")[0];
        var script = document.createElement("script");
        script.src = src;
        script.type = "text/javascript";
        head.appendChild(script);
        if (typeof callback == "function") callback();
    };
}

window.addOnLoad(function () {
    window.addScript("example.js");
});
使用Dojo:

使用jQuery:


请参阅文章和获得一些建议。

请参阅文章和获得一些建议。

window onload是一个不错的概念,但更好的选择是使用jQuery并将代码放入“document ready”块中。这具有相同的效果,但是您不必担心onload函数已经有订户了

或:

编辑: 使用此模式调用所有外部服务。重构外部脚本文件,将它们对外部服务的ajax调用放在这些文档就绪块中,而不是内联执行。然后,唯一的加载时间将是实际下载脚本文件所需的时间

编辑2: 您可以在页面加载后或在页面上的任何其他dom事件中使用jQuery的内置功能加载脚本


windowonload是一个很好的概念,但是更好的选择是使用jQuery并将代码放在“documentready”块中。这具有相同的效果,但是您不必担心onload函数已经有订户了

或:

编辑: 用这个拍子 ern呼叫您的所有外部服务。重构外部脚本文件,将它们对外部服务的ajax调用放在这些文档就绪块中,而不是内联执行。然后,唯一的加载时间将是实际下载脚本文件所需的时间

编辑2: 您可以在页面加载后或在页面上的任何其他dom事件中使用jQuery的内置功能加载脚本


如果不需要特定的脚本广告加载时间,可以在运行时通过向页面添加另一个脚本元素来加载它。

如果不需要特定的脚本广告加载时间,您可以稍后通过在运行时向页面添加另一个脚本元素来加载它。

我认为原始海报对加载外部JavaScript文件感兴趣。通常,这是在中完成的,在解决这些链接之前,页面无法继续加载。你的答案是关于如何在页面加载后调用JS,而不是如何将JS拉入其中。在重新阅读原始问题后,我明白了你的观点。在这种情况下,我的答案可以与这样的东西结合起来:我已经用你的评论更新了我的答案。谢谢我认为最初的海报对加载外部JavaScript文件感兴趣。通常,这是在中完成的,在解决这些链接之前,页面无法继续加载。你的答案是关于如何在页面加载后调用JS,而不是如何将JS拉入其中。在重新阅读原始问题后,我明白了你的观点。在这种情况下,我的答案可以与这样的东西结合起来:我已经用你的评论更新了我的答案。谢谢
jQuery(function($) {
  // Your code using failsafe $ alias here...
});
jQuery(function($) {
   $.getScript("http://www.yourdomain.com/scripts/somescript1.js"); 
   $.getScript("http://www.yourdomain.com/scripts/somescript2.js"); 
});