2010-05-25 21 views
5

Kullanıcı, tarayıcıdan geri döndükten sonra tarayıcı geri düğmesi aracılığıyla sayfaya gittiğinde ortaya çıkan ASP.NET sayfamda gerçekleşen bir "titreme" efekti engellemeye çalışıyorum. Titremenin nedeni, ilk sayfa yüklemesinde bir miktar içeriğe sahip bir Güncelleme Paneli kullanıyorum. Sonuç olarak, sayfa bir Geri düğmesiyle yüklendiğinde, başlangıç ​​içeriği, Geçmişi doğru olan verilerle güncellemeden önce çok kısa bir süre gösterilir.Bir sayfa yükü bir AJAX geçmiş noktasının sonucu olduğunda istemci tarafını nasıl algılayabilirim?

Bunun üstesinden gelmek için, güncelleme sayfasını gizli sayfa yüküne gizlemeyi (ekran: yok) bulundurmayı ve sonra başa çıkmak için herhangi bir geçmişimiz olmadığı sürece göstermeyi amaçlıyorum. Sorun şu ki, tarih olup olmadığını belirlemek için neyin kontrol edileceğini öğrenemiyorum. Sys.Application'ın bir _history üyesi olduğunu görebiliyorum, ancak sayfayı init üzerinde kontrol ettiğimde her seferinde boş.

Sayfa yükleme istemci tarafı için uğraşmak için geçmiş olup olmadığını belirlemek için ne kontrol etmem gerektiğini bilen var mı? Ve bunu yapmak için hangi noktada?

cevap

1

Tarayıcının geri düğmesi ve sağladığı işlevsellik, web sayfanızın içeriğinden tamamen bağımsızdır.

Yapabileceğiniz bir şey, AJAX güncelleştirmesi yaptığınızda konum karma ayarını yapmaktır. Bir sayfa yüklediğinizde bunu algılayabilirsiniz. Denemedim. Sunucu Tarafındaki URL'nin # bölümünü ayrıştırmanız ve AJAX geçmişinde nerede olduğunuzu görebilmeniz gerekir.

location.hash = 'foo'; 
0

Cevabınız için teşekkürler Daniel. Artık, görüntüleme özelliği hiçbir şekilde ayarlanmayan güncelleme panelimin etrafında bir div var. Sys.Application'ın init olayında, sayfa yükünün bir tarayıcı geri/ileri düğmesi tıklamasının sonucunu belirlemek için window.location.hash değerini kontrol ediyorum. Eğer öyleyse, ekran özelliğini engellemek için ayarlıyorum, eğer olmasa da, şu an için 'display: none' olarak bırakıyorum.

ScriptManager Gezinme olay işleyicisindeki sunucu tarafındaki tıklatılan geri düğmesinin sonucu olarak adlandırılan olay tarafı, görüntü özelliğinin engellenmesini ayarlayan bir istemci komut dosyası bloğu kaydediyorum.

Biraz test yaptım ve iyi çalışıyor gibi görünüyorum ve artık titreşimi almıyorum. Geçmişi kontrol etmek için MS AJAX istemci nesnelerini kullanmayı tercih ederim ama biz varız.

+0

Bunu yapmanın en iyi yolu şudur: ekranı ayarlayın: sayfa yüklemesinde yok (onBody). Bunu karşılamalıdır. – waqasahmed

+3

yorumlarını, diğer kişilerin sorularını veya geri bildirimlerini temel alarak yanıtlayan veya orijinal sorunuzu daha ayrıntılı bilgi veren kişilere yanıt vermek için kullanmalısınız. Tartışmayı bireysel cevap olarak göndermeyin, aksi takdirde sorununuza gerçek bir cevap vermediyse (kendiniz çözdünüz.) –

0

Sayfada boş bir değer içeren gizli bir giriş yapın ve sonra sayfa yükleme değerini ayarlayın. Geri düğmesini kullanırken, sayfa yükleme komut dosyasının değeri ayarlandığını bulacağınızı ve buna göre yanıt verebileceğinizi göreceksiniz. Bu, sayfa içerikleri arasındaki form içeriğini koruyan tarayıcı işlevlerinden yararlanır.