Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.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_Html - Fatal编程技术网

Javascript 有没有办法处理文档加载缓慢的问题。编写脚本?

Javascript 有没有办法处理文档加载缓慢的问题。编写脚本?,javascript,html,Javascript,Html,来自第三方聊天网站的嵌入代码建议嵌入代码如下: document.write(unescape("%3Cscript src='https://site.com/script.js' type='text/javascript'%3E%3C/script%3E")); 外部Javascript本身也包含document.writecode。这意味着传统的延迟加载策略会阻止脚本完全工作。没有延迟加载是一个问题,因为有时加载脚本可能需要90秒,这会阻止整个页面的DOMReady事件 在我自己的站点

来自第三方聊天网站的嵌入代码建议嵌入代码如下:

document.write(unescape("%3Cscript src='https://site.com/script.js' type='text/javascript'%3E%3C/script%3E"));
外部Javascript本身也包含
document.write
code。这意味着传统的延迟加载策略会阻止脚本完全工作。没有延迟加载是一个问题,因为有时加载脚本可能需要90秒,这会阻止整个页面的DOMReady事件


在我自己的站点上(考虑到我无法控制嵌入的脚本),我能做些什么来处理性能问题吗?不要介意解决方案是否不能在所有浏览器中运行。

您可以做的最好的事情是将脚本标记放在尽可能靠近文档结尾的位置(在标记之前)。您可以通过以下功能添加脚本:

function loadScript(url, callback) {
        var script = document.createElement("script");

        script.type = "text/javascript";

        //callback functionality
        if (!!callback && Ext.isFunction(callback)) {
            if (script.readyState) { //IE
                script.onreadystatechange = function() {
                    if (script.readyState === "loaded" || script.readyState === "compleate") {
                        script.onreadystatechange = null;
                        callback();
                    }
                };
            } else { //other browsers
                script.onload = function() {
                    callback();
                }
            }
        }

        script.src = url;
        document.getElementsByTagName('head')[0].appendChild(script);
    }
而不是使用

document.write('...')

您可以做的最好的事情是将脚本标记放在尽可能靠近文档末尾的位置(在标记之前)。您可以通过以下功能添加脚本:

function loadScript(url, callback) {
        var script = document.createElement("script");

        script.type = "text/javascript";

        //callback functionality
        if (!!callback && Ext.isFunction(callback)) {
            if (script.readyState) { //IE
                script.onreadystatechange = function() {
                    if (script.readyState === "loaded" || script.readyState === "compleate") {
                        script.onreadystatechange = null;
                        callback();
                    }
                };
            } else { //other browsers
                script.onload = function() {
                    callback();
                }
            }
        }

        script.src = url;
        document.getElementsByTagName('head')[0].appendChild(script);
    }
而不是使用

document.write('...')

您可以将它放在iframe中—即使它阻止了,它也阻止了不同的文档。你也可以把它放在页面的底部(这样它就不会延迟页面),然后将生成的HTML在DOM中移动到你想要的地方——这是一种更危险的策略,因为它可能会破坏聊天代码。

你可以把它放在iframe中——即使它阻止了,它也会阻止不同的文档。你也可以把它放在页面底部(这样它就不会延迟页面)然后将生成的HTML在DOM中移动到您想要的位置-这是一种更危险的策略,因为它可能会破坏聊天代码。

我已经说过,由于脚本本身使用document.write,所以这不起作用。我已经说过,由于脚本本身使用document.write,所以这不起作用。它已经在页面底部了-因为脚本在document.write中立即执行,所以DOMReady事件被阻止。所以那没用。不过iFrame是个有趣的主意,我会看看我是否能做点什么。啊。。。没错,将脚本移到底部将有助于不延迟页面内容,但这无助于DOMLoadIt已位于页面底部-因为脚本在document.write中立即执行DOMReady事件被阻止。所以那没用。不过iFrame是个有趣的主意,我会看看我是否能做点什么。啊。。。没错,将脚本移到底部将有助于不延迟页面内容,但这无助于DOMLoad