Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.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
如何找出页面已加载的百分比以更新jQuery UI progressbar?_Jquery_Xml_Jquery Ui_Xslt_Progress Bar - Fatal编程技术网

如何找出页面已加载的百分比以更新jQuery UI progressbar?

如何找出页面已加载的百分比以更新jQuery UI progressbar?,jquery,xml,jquery-ui,xslt,progress-bar,Jquery,Xml,Jquery Ui,Xslt,Progress Bar,我有一个巨大的xml文件,我正在使用xslt转换它。我还在页面加载上使用jquery做很多事情。基本上隐藏了很多div,并在onclick之后打开它们。因此,页面加载现在需要2-3秒 我认为最好在加载时显示progressbar,这样用户就知道页面正在加载,而不是盯着白色屏幕。在查找jQueryUIProgressBar时,我发现它有一个值属性,它决定了条的长度 $( "#progressbar" ).progressbar({ value: 37}); 现在,正如我已经告诉我的js文件有一个

我有一个巨大的xml文件,我正在使用xslt转换它。我还在页面加载上使用jquery做很多事情。基本上隐藏了很多div,并在onclick之后打开它们。因此,页面加载现在需要2-3秒

我认为最好在加载时显示progressbar,这样用户就知道页面正在加载,而不是盯着白色屏幕。在查找jQueryUIProgressBar时,我发现它有一个值属性,它决定了条的长度

$( "#progressbar" ).progressbar({ value: 37});
现在,正如我已经告诉我的js文件有一个巨大的
$(document).ready(function(){……})加载整个页面。如何获取页面已加载量的值,以便将其传递给progressbar的value属性

$(document).ready
在加载DOM之前不会启动,因此这不会有多大帮助

由于您不知道文档(在JavaScript中)有多大,因此很难准确地做到这一点

一种解决方案可能是在文件的顶部包含一些信息,以指示元素的预期效果。然后,您可以计算DOM中的元素,了解您的完整性

您可以使用计时器或时间间隔在文档准备好之前开始查看,并一直查看,直到达到100%

if (document.getElementById('expected')) {
    var expected = parseInt(document.getElementById('expected').value, 10);
    var loaded = document.getElementsByTagName('div');
    var progress = (loaded / expected) * 100;
}
您需要靠近页面顶部的
预期的
元素

<input type="hidden" id="expected" value="50" />


最好只显示一个不确定的进度条。在函数中的各个点,根据您估计的进度更新进度条的值。“$(文档)。在加载DOM之前准备就绪”它是在DOM准备就绪时启动的,而不是在加载时启动的。@KevinB,这里的区别是什么?DOM只有在完全加载后才准备就绪,但事实并非如此。在完成图像加载之前,DOM已准备就绪。(忽略IE6/7/8中domready启动太晚的错误)加载DOM时DOM已准备就绪。这不包括图像。在加载最后一个元素之前,DOM无法就绪。