2015-12-06 24 views
9

URL'sinden manuel değişiklik yapmaya izin vermeden etkinleştiriyorum Gelişmekte olduğum bir jQuery Mobile uygulamasına sahibim. jQuery Mobile, tarayıcının geri düğmesinin dinamik olarak çalışmasına izin vermek için varsayılan olarak pushState kullanır.Geri düğmeyi,

Artık, uygulamamın sayfalarını dinamik olarak değiştirmesi amaçlanıyor ve kullanıcı uygulamayı yüklerken her zaman ön sayfaya ulaşmalıdır.

Sorun, jQuery Mobile uygulamasında bir sayfaya gittiğimde sayfanın karma değerini URL'de günceller. Şimdi, kullanıcı uygulamada aynı karmayı girerse, jQuery Mobile bunları otomatik olarak o sayfaya götürecektir (kodlarım tarafından ele alınmasını istediğimde). Ayrıca, sayfayı yeniledikleri takdirde, kodlarımın URL'nin sahip olduğu karma değere doğrudan taşınmaması gereken yere götürmelerini isterim.

Bunu önlemek için, ben mobileinit olay aşağıdaki kodu ekleyin çalıştı:

$.mobile.hashListeningEnabled = false; 

Bu işler, ama aynı zamanda da geri düğmesine kırar pushState güncellemeleri, ben don' devre dışı bırakır Olmak istemiyorum.

Kullanıcıların sayfalar arasında manüel harekete izin vermese de, arkadaki düğmeyi kullanmasına izin vermenin en iyi yolu ne olurdu?

+0

Bu soruya 100 puanınızı yatırdınız; İki cevabınız var, sorununuzu çözmenize yardımcı oldu mu? – Omar

cevap

6

senin sorunundan için olası ve kesin çözüm açıklamak için çok fazla eleman yok, ama kolay bir kimse bu şekilde olmalıdır: gibi bir işlev eklemek başka birine almak için sayfadaki her linke

Bu: aynı sayfada

$(DOMElem).on("click",function(){ 
    sessionStorage["urlChangedByLink"] = "true"; 
}); 

hayır bu sorun varsa deneyebileceğiniz:

$(window).on("navigate", function(event, data) { 
    if(sessionStorage["urlChangedByLink"] == "true") 
    $.mobile.hashListeningEnabled = true; 
    else 
    $.mobile.hashListeningEnabled = false; 
}); 

Ya da bu, diğer sayfada eğer kontrol bu depolama variabl e exsist ve operasyon yapmak daha: Burada

if(sessionStorage["urlChangedByLink"] == "true") 
    continue navigation... 
else 
    window.history.back(); 
+0

mükemmel bir öneri Emanuele! Navigasyon sorunlarımda bana yardımcı olmak için geçmişte localStorage kullanıyorum. Bir rehberde gezinmek zorunda kaldım, bu yüzden 3 basamaklı kodu sakladım, böylece nerede olduğumu her zaman biliyordum! –

+0

sessionStorage ["urlChangedByLink"] öğesini false olarak ayarladığınız bir yer olmamalıdır. aksi halde her zaman doğru olacaktır. Sanırım pencerenin sonuna doğru giderken yanlış yönlendiriciye ayarlamalıyız. –

+0

Hatalı. Bu, mevcut sayfayı yenilemeyi ve sayfalara elle karma ile ulaşmayı kapsamaz. Kullanıcıların neden tamamen yanlış cevap verdiklerini merak ediyorum. – Omar

0

tek seçenek sadece sayfa div için öznitelik eklemek ve bu şekilde ana sayfanıza eşit için url set sayfalarınızın her biri için data-url ayarlamaktır Tarihte gösterilen sayfa karma değerlere sahip değildir (veya kendi değerlerinizi dahil edebilirsiniz). bunun üzerindeki belgeler daha iyi açıklanmıştır in the jquery mobile documentation

İlgili konular