有没有办法处理加载缓慢的文档.写脚本
Is there a way to deal with slow-loading document.write scripts?
来自第三方聊天网站的嵌入代码推荐如下:
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('...')
相关文章:
- 如何通过谷歌应用程序脚本从谷歌文档中的位置确定命名范围
- HTML文档中脚本标记的位置-<头部>&<身体>有不同的行为
- 谷歌文档's脚本
- 如何获取文档id's在BaasBox[0.9.2]中使用java脚本
- 对couchdb数据库/视图中的所有文档运行脚本/查询
- 显示“<script src='some.js'></脚本>"在Html文档中
- 多个“;脚本调用"在SINGLE”内$(文档).ready()”;
- 如何以编程方式将内容脚本添加到 iframe 文档
- <!文档html>在JS脚本中触发“use strict”
- 谷歌应用程序脚本:如何修复循环将一个谷歌文档的段落插入另一个
- 在执行客户端脚本后获取文档源
- 谷歌文档脚本addToFolder
- PHP将JS脚本写入我的html源文档
- 添加<a>元素添加到使用Apps脚本的Google文档中
- javascript文档.write脚本
- 如何将<脚本>放在框架集文档的“正文”中
- 通过node-js脚本将文档数组插入mongodb中的数据库时出现问题
- 有必要将元素分离出来.谷歌文档脚本错误
- 主干:准备好文档脚本
- 为什么我在谷歌文档脚本中的body.replaceText函数的for循环停止了