2012-11-13 16 views
11

Sayfaları eşzamansız olarak javascript/jquery ile yüklerken geçmiş api ile çalışıyorum. Tarayıcıya, sitenin yüklendiğini, böylece tarayıcının bir yükleme resmi gösterebilmesini (böylece firefox'taki dönen tekerleği) nasıl anlatılabileceğini merak ediyorum.Tarihçe Api: Tarayıcıya sayfa nasıl yüklendiğini nasıl söylerim?

Düzenleme:

daha spesifik olmak gerekirse:

ben yeni içerik gösterilir siteme, url değişiklikleri, bir sayfayı yüklemek, ancak Firefox bir sinyal olarak çıkrık görünmezsem , sayfa yükleniyor.

Facebook'taki zaman çizelgesinden bir resim açarsam, resim yüklenir, url değişir ve Firefox, görüntünün arka planda yükleniyor olduğunu göstermek için dönen tekerleği gösterir.

Bu tekerleği de istiyorum!

cevap

1

Async isteği bir şeylerin yüklenmekte olduğunu bilir. Olayı başka bir yere yaymanız gerekecek. Örneğin, beforeSend kanca kullanarak: sonra

$.ajax('/your_stuff', 
     beforeSend: function() { 
     $(document).trigger('loading'); 
     } 
     ....) 

ve:

$(document).on('loading', function() { alert("request is loading");} 

Sana geçmiş API ile URL güncellemek aynı anda olayı tetiklemek için tavsiye ederiz.

+1

Bu komut dosyası bir uyarı kutusunu gösterir. Ancak, tarayıcının kendisi, sayfanın yüklendiğini gösteriyor. – Olli

+0

soruyu biraz yanlış, o zaman formüle ettiniz. Eğer doğru anladım eğer ajax istekleri yaparken "yükleme" durumunu simüle etmek için favicon nasıl güncelleyebilirsiniz bilmek istiyorum. – ChuckE

+0

https://gist.github.com/428626 Bu size yardımcı olabilir. Artık sadece tarayıcıdan tarayıcıya farklı olabilecek "yükleme" simgesinin nerede olduğunu bilmeniz gerekiyor.Yani, ya da sizin durumunuzda her yerde çalışmak için bir tane olsun, ya da tarayıcı ile yerini bulmak ve tarayıcıyı güncellemeden önce "kokla". – ChuckE

-1

AJAX'ınız için jQuery'yi kullandığınız etiketlerden varsayıyorum. Eğer kod içindeki bir ajax yöntemini çağırın nerede olursa olsun patlayacaktır $.ajaxStart() ve $.ajaxComplete() Bunlar gibi küresel AJAX işleyicileri kullanabilirsiniz

$('#myLoadingDiv').ajaxStart(toggleLoading).ajaxComplete(toggleLoading); 

function toggleLoading(){ 
    $(this).toggle(); 
} 

Ben senin soruların dili dan düşünmek http://api.jquery.com/ajaxStart/

yapabileceksiniz istediğiniz API referansı yükleme görüntüsünü gerçek tarayıcı sekmesinde kendisi kontrol eder. Bunu kontrol edemezsin. Kendi resmi veya sayfa içinde metin kullanma

Bu kodu için id=myLoadingDiv sahip bir öğenin kendi yükleme animasyonu sağlamalıdır DÜZENLEME Bunları söz konusu cevabını buldu

+0

Bu komut dosyası bir uyarı kutusunu gösterir. Ancak, tarayıcının kendisi, sayfanın yüklendiğini gösteriyor. – Olli

+0

, tarayıcının kendisi tarafından, sayfanın yüklenmekte olduğunu gösterir. Ayrıca bir uyarı kutusu değil ... istediğiniz herhangi bir yerde herhangi bir html yerleştirilebilir ve istediğiniz herhangi bir şekilde canlandırabilirsiniz – charlietfl

+0

Oh, üzgünüm, bu yorum diğer cevaplara - sizinki değil. Senaryonunu test ettim, ama firefox'taki "çıkrık" görünmüyor. Sorumu daha fazla açıklama ile düzenledim. – Olli

7

çalışmak da kullanıcıya daha görünür:

How to have AJAX trigger the browser's loading

var i = $('<iframe>'); 
console.log(i); 
i.appendTo('body'); 
function start() { 
    i[0].contentDocument.open(); 
    setTimeout(function() { 
     stop(); 
    }, 1000); 
} 
function stop() { 
    i[0].contentDocument.close(); 
    setTimeout(function() { 
     start(); 
    }, 1000); 
} 

start(); 

Kaynak: jsFiddle

Komut dosyası, ajax.start & ajax.stop-event tarafından tetiklenen bir iframe oluşturur.

+1

Chrome'da çalışmaz :-( – Frodik

İlgili konular