2012-08-02 92 views
5

如果我有5个javascript文件,并且每个CSS的大小和大小都不同,是否可以在脚本/ css下载时显示“实时”进度条?在HTML5中下载进度

我知道这在HTML4中是不可能的,并且需要Flash/Silverlight。但我可以在HTML5中实现这一点吗?如果是的话,我会怎么做?

我想显示一个文本,如“正在下载”,并且每个脚本/ css实时下载,每个下载的字母应该开始填满。我没有要求任何代码。只是想要一个高层次的概念,如何可能。

谢谢。

+0

正在寻找像preloader? – 2012-08-02 05:52:21

+0

@Johndave Decano:是的,当资产被下载时,我的信件应该被填充不同的颜色。 – Jack 2012-08-02 06:10:48

+2

这不是一个答案,而是需要考虑的事情:大多数Web开发人员花费时间找到一种方法来尽可能快地加载其资产,以便用户获得最佳体验。如果你想展示一个预加载器,尽可能看起来很花哨,那么你就避免了真正的问题:减少加载时间,带宽使用和请求。 – Phortuin 2012-08-02 09:12:24

回答

3

这是我所能想出的;在HTML5中有一个您可以使用的<progress>元素。坏消息是对这个元素的支持不如它可能。请参阅此处的支持图表:http://caniuse.com/#search=progress在Safari 5及更低版本或IE9及更低版本中不支持。部分支持在IE10和任何相关版本的FireFox中。如果你需要更多的支持尝试这样一个polyfil:http://lea.verou.me/polyfills/progress/

如果您选择使用<progress>元素这里有一个关于如何风格它链接:http://www.useragentman.com/blog/2012/01/03/cross-browser-html5-progress-bars-in-depth/

现在关于使这项工作的伎俩,你会需要知道您将要下载的文件的文件大小以及下载的字节数。当文件被下载时,你必须得到标题信息,告诉你有多少字节被传送。你可以在这里看到一个如何用jQuery做的例子:http://markmail.org/message/kmrpk7w3h56tidxs#query:jquery%20ajax%20download%20progress+page:1+mid:kmrpk7w3h56tidxs+state:results

请注意,这种方法不适用于IE。 IE不公开XHR对象的标题数据。

此时设置<progress>元素的总文件大小的max属性并使用setTimeout样品,更新<progress>元件的value属性。

知道了所有这些,也许找到某种具有内置闪回回退的包解决方案可能会更容易实现,并有更好的支持。任何人有任何想法?

祝你好运。