2012-03-19 61 views
0

我平時如何知道document.ready剩下多少時間/%?

$('#load').show(); 
$(document).ready(function(){ 
    $('#load').hide(); 
}); 

其中<div id="load">剛一gif動畫

,但我想的是提高一點點,顯示了具有

<div id="load"><div id="done"></div></div> 

所以進度

我可以,在超時(我猜)

var percent_done = how_do_i_figure_out(); /* here is where i need help */ 
$('#done').width(percent_done); 
+0

無法知道已經生成了多少DOM。 – 2012-03-19 21:12:13

+0

英里第一個猜測是有一個動畫({寬度:'100%'},average_load_time),但只是... – 2012-03-19 21:12:16

+0

@KevinB所以gmail做什麼? (我的最後一次提交) – 2012-03-19 21:12:52

回答

5

這是無法完成的!

您無法訪問尚未呈現的元素,那麼您如何知道缺失的是什麼?

+0

但是如果我知道總共有多少kb,那麼呢? – 2012-03-19 21:13:58

+0

@ToniMichelCaubet瀏覽器不提供該信息。 – Pointy 2012-03-19 21:15:21

+0

但讓我們說它已知的值,var page_weight = 600/* kB * /。有沒有辦法知道已經下載了多少kB?如果是這樣,它可以百分之百= downladed()/ page_weight * 100(或其他) – 2012-03-19 21:17:20

0

有太多的變量來確定需要加載多少時間。有些無法計算(如互聯網連接速度)。

1

我只會使用假進度條。這是一個例子。

http://jsfiddle.net/dM8Qp/1/

這是不可能知道它是要去多久是DOMready事件發生之前。

HTML

<div id="pb"></div>​ 

JS

$("#pb").progressbar(); 
var preloader = $("<div />").css("height", "0px").animate({ 
    height: 95 
}, { 
    step: function() { 
     //console.log(Math.ceil(parseFloat($(this).css("height")))) 
     $("#pb").progressbar("value", Math.ceil(parseFloat($(this).css("height")))); 
    }, 
    duration: 2000 
}); 

$(document).ready(function(){ 
    preloader.promise().done(function(){ 
     $("#pb").add(preloader).remove(); 
    }); 
}); 

在評論每gdoron的建議更新。

+0

我會將進度條填充到最大95%,然後當DOM準備好時將其更改爲100%,然後隱藏它。無論如何,假進度條並不是最佳實踐,請等待_聽起來像是一個更好的解決方案。 – gdoron 2012-03-19 21:37:49

+0

@gdoron同意,但有時你只需要請你的客戶。這裏是實現相同類型功能(沒有進度條)的燈絲組網站:http://www.filamentgroup.com/ – 2012-03-19 21:44:46

+0

我用你的想法,但只是一個簡單的動畫(寬度)funcook.com它沒那麼差,呵呵?謝謝! – 2012-03-19 22:32:28

相關問題