我有一个引导选项卡控件,这很好.在每个选项卡上,我需要加载一个html文档(大可能大于10MB).一切都很好但在加载数据后,UI响应太慢,即使需要5,6秒来切换选项卡.
点击时不需要任何延迟. UI应该每次都响应.
我有什么办法实现吗?
这是我迄今为止所做的
点击时不需要任何延迟. UI应该每次都响应.
我有什么办法实现吗?
这是我迄今为止所做的
<div class="row"> <div class="col-md-12"> <ul class="nav nav-tabs" id="myTabs"> <li class="active"><a href="#home" data-toggle="tab">Home</a></li> <li><a href="#dpa" data-toggle="tab">DPA</a></li> <li><a href="#rn" data-toggle="tab">Antwon</a></li> </ul> <div class="tab-content" style="width:100%;height:600px;"> <div class="tab-pane active" id="home"> <p>test</p> </div> <div class="tab-pane" id="dpa" src="../TabsData/data2.htm"> <iframe src="" style="width:100%;height:600px"></iframe> <div id="data"></div> </div> <div class="tab-pane" id="rn" src="../TabsData/data2.htm"> <iframe src="" style="width:100%;height:600px"></iframe> <div id="data"></div> </div> </div> </div> </div>
// Javascript代码
$('#myTabs').bind('shown.bs.tab',function (e) { paneID = $(e.target).attr('href'); src = $(paneID).attr('data-src'); // if the iframe hasn't already been loaded once if ($(paneID + " iframe").attr("src") == "") { $(paneID + " iframe").attr("src",src); } });
注意:好的,它应该缓慢加载,因为它有大的数据要加载.但为什么一旦一切都被加载,为什么会慢?
解决方法
关于Javascript的是它是单线程的.所以当你尝试这个大的操作时,它会阻止其他的浏览器事件,直到这个操作完成.然而,JavaScript中最近有一些开发允许多线程进程.
选项1 – 网络工作者
查看并利用Web Workers来抵消流程,使其不影响UI的响应.
选项2 – AJAX
使用AJAX加载您的HTML,以便该进程是异步的.这样,浏览器可以在后台加载而不影响您的UI.
$("#yourDiv").load("demo_test.html");
两者都将解决您的UI问题,因为它正确地将浏览器资源分配给“另一个线程”.