有没有办法处理加载缓慢的文档.写脚本

Is there a way to deal with slow-loading document.write scripts?

本文关键字:文档 脚本 缓慢 加载 处理 有没有      更新时间:2023-09-26

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

document.write(unescape("%3Cscript src='https://site.com/script.js' type='text/javascript'%3E%3C/script%3E"));

和外部Javascript本身也包含document.write代码。这意味着传统的延迟加载策略会完全阻止脚本工作。没有延迟加载是一个问题,因为脚本有时可能需要90秒来加载,这会阻塞整个页面的DOMReady事件。

是否有什么我可以做在我自己的网站(给我没有嵌入式脚本的控制)处理性能问题?如果解决方案不能在所有浏览器中工作,请不要介意。

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

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

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('...')