我使用以下方法将外部HTML文件加载到DIV中:
var docName = name + ".html";
$("#displayPanel").load(docName);
然后,我在控制该HTML文件的javascript文件上调用getScript,如下所示:
docName = name + ".js";
$.getScript(docName, function( data, textStatus, jqxhr ) {
if (textStatus==="success") {
lightItUp(); //load method
}
});
它正确装载。
问题是,对于大型HTML/JS文件,DOM被冻结,用户交互被禁用,直到加载完成为止。是否可以将div加载到“后台线程”并接收完成通知?
发布于 2014-03-26 13:50:01
不确定我是否正确地理解了你的问题。
如果您想让它像div正在后台线程上加载并在完成时接收通知一样,您可以首先使用div display:none
并在回调中使其为display:block
。
$( "#aDivInDisplayPanel" ).load( docName, function() {
//load completed.
$(this).fadeIn();
});
发布于 2014-03-26 13:50:08
您考虑过使用HTML5网络工作人员吗?
webworkers.asp
在HTML页面中执行脚本时,在脚本完成之前,页面会变得没有响应。 worker是一个在后台运行的JavaScript,独立于其他脚本,不影响页面的性能。你可以继续做任何你想做的事情:点击,选择,等等,而网络工作者在后台运行。
发布于 2014-03-26 14:07:06
除非您以某种方式实现AJAX同步,否则上述代码无法阻止UI,除非浏览器需要很长时间来处理HTML (IE6.6可能需要1-2分钟来解析以这种方式加载的HTML ),或者lightItUp()
中有些东西需要很长时间才能完成。
下一步是启动浏览器的性能工具并检查时间。您上面发布的代码看起来是正确的,不应该引起您所描述的内容。
https://stackoverflow.com/questions/22662916
复制相似问题