Güncel Devleti Eşleme AJAX Uygulaması'nda Adres Çubuğu URL'yi değiştirin

oy
160

Ben bir AJAX uygulaması yazıyorum, ancak kullanıcı uygulaması yoluyla hareket ederken, ben adres çubuğuna URL sayfasının yeniden olmamasına rağmen güncellemek istiyorum. Onları herhangi bir noktada yer imi edebilmek ve böylelikle mevcut durumuna dönmek için Temelde, istiyorum.

Nasıl AJAX uygulamalarında saldırganlık koruyarak taşıma insanlar?

Oluştur 04/08/2008 saat 18:53
kaynak kullanıcı
Diğer dillerde...                            


8 cevaplar

oy
116

Bunu yapmanın yolu manipüle etmektir location.hashAJAX güncelleştirmeleri Bir sağduyulu bir URL'ye sahip olmak istediğiniz bir devlet değişime neden zaman. Örneğin, sayfanızın url ise:

http://example.com/

Bir istemci tarafı işlevi bu kodu yürütülür edin:

// AJAX code to display the "foo" state goes here.

location.hash = 'foo';

Sonra tarayıcıda görüntülenen URL güncellendi olacaktır:

http://example.com/#foo

Bu, kullanıcıların "foo" sayfasının devlet ve devletler arasında gezinmek için tarayıcı geçmişini kullanmak imi verir.

yerine bu mekanizma sayesinde, ardından gönderilmez bölüm tanımlayıcı (# sonraki kısım) gibi uygun başlangıç ​​durumunu oluşturmak ve görüntülemek için JavaScript kullanarak istemci tarafında URL sağlama kısmı dışarı ayrıştırmak gerekir sunucusu.

Ben Alman takımından hashchange eklentisi jQuery kullanıyorsanız bir esinti ikincisi yapar.

Cevap 04/08/2008 saat 19:04
kaynak kullanıcı

oy
18

book.cakephp.org gibi sitelerde bak. Bu site hash kullanarak ve AJAX kullanmayan olmadan URL'sini değiştirir. Ben bunu tam olarak nasıl yapar emin değilim ama onu anlamaya çalışıyorum. herkes biliyor, bana bildirin.

Belli bir proje içinde bir gezinmek bakarken Ayrıca github.com.

Cevap 13/02/2011 saat 20:47
kaynak kullanıcı

oy
17

Yazar yeniden veya Ajax kullanırken onun ziyaretçinin yönlendirmek istiyor olası değildir. Ama neden HTML5 en kullanmayın pushState/ replaceState?

Sen kadar istediğiniz gibi addressbar değiştirmek mümkün olacak. AJAX ile doğal görünümlü adresler alın.

Benim son proje üzerinde koda bak: http://iesus.se/

Cevap 27/04/2011 saat 09:09
kaynak kullanıcı

oy
12

Bu Kevin söylediklerini benzer. Bazı javascript nesne olarak müşteri durumu olabilir ve siz durumunu kaydetmek istediğinizde, nesneyi (JSON ve base64 şifrelemesini kullanan) hale. Daha sonra bu dizeye href parçasını ayarlayabilirsiniz.

var encodedState = base64(json(state));
var newLocation = oldLocationWithoutFragment + "#" + encodedState;

document.location = newLocation; // adds new entry in browser history
document.location.replace(newLocation); // replaces current entry in browser history

Birinci yol yeni bir konuma (böylece önceki konumuna götürecek olan geri düğmesine) gibi yeni halini görür. İkincisi yok.

Cevap 04/08/2008 saat 19:02
kaynak kullanıcı

oy
3

OP veya diğerleri hala Iesus tarafından önerildiği gibi, pushState ve replaceState kullanarak, devlet etkinleştirmek için tarayıcı geçmişini değiştirmek yapmak için bir yol arıyorsanız, şimdi bunu yapmak için 'doğru' bir yoldur. Bu location.hash üzerinde önemli avantajı gerçek adresler oluşturduğu gibi görünüyor var, sadece sağlamalarının değil. karmalar kullanarak tarayıcı geçmişi kaydedilir ve sonra JavaScript özürlü ile dönülmüş ise karmaları sunucuya gönderilen olmadığı için, uygulama çalışmaz. pushState kullanılmıştır Ancak, tüm rota sonra yollara uygun bir şekilde yanıt inşa edebilirsiniz sunucusuna gönderilir. Aynı bıyık şablonları sunucu ve istemci tarafında hem de kullanıldı örnek gördük. İstemci JavaScript etkinleştirilmelidir olsaydı, sunucuya roundtrip kaçınarak çabuk tepkiler alacağı, ancak uygulama javascript olmadan da gayet rahat çalışır. Bu nedenle, uygulama incelikle JavaScript yokluğunda düşürebilir.

Ayrıca, history.js gibi bir isim ile orada bazı çerçeve, olduğuna inanıyoruz. HTML5'i destekleyen tarayıcılar için, o pushState kullanır, ancak tarayıcı bu desteklemiyorsa, otomatik olarak geri karmalar kullanarak düşüyor.

Cevap 23/06/2011 saat 10:20
kaynak kullanıcı

oy
3

Window.location.hash yöntem şeyler yapmanın tercih edilen yoldur. Bir bunu nasıl açıklaması için benzersiz URL'lerin - Ajax Kalıpları .

YUI karmasını kullanarak adresini yeniden yazma ile birlikte çalışan geri düğmesine almak için IE özgü çalışma arounds içeren bir modül olarak bu modelin bir uygulama vardır. YUI Tarayıcı Geçmişi Müdürü .

Diğer çerçeveler de benzer uygulamalara sahiptir. Önemli olan nokta Tarihin yeniden yazma adresi ile birlikte çalışmak istiyorlarsa, farklı tarayıcılar hallediyorum farklı yollarını ihtiyaç olduğunu. (Bu, ilk bağlantı makalesinde ayrıntılı budur.)

IE Firefox aynı yöntemi kullanarak çifte tarihini üretecek bir iframe tabanlı hack, ihtiyacı vardır.

Cevap 31/03/2009 saat 06:54
kaynak kullanıcı

oy
3

SWFAddress Flaş & JavaScript projelerde çalışır ve bookmarkable (yukarıda bahsedilen karma yöntemini kullanarak) URL'ler yanı sıra size geri düğmeli destek vererek oluşturmanızı sağlar.

http://www.asual.com/swfaddress/

Cevap 01/09/2008 saat 14:43
kaynak kullanıcı

oy
2

Eğer sayfanın dışına diyor javascript URL çubuğundaki, tıkladığınızda kullanıcı, sayfa 'in' olup olmadığını kontrol edin. el javascript fare imleci, sonra keyboad olay komutu (document.onkeypress) ile sayfadaki tıklama olmadan sonra tekrar sayfasına gitmek içinde sembol '#' ile url bar ve basın 'ENTER', değiştirirseniz olacak o yönlendirme için javascript girip aktif eğer kontrol edebilmek. Kullanıcı window.onfocus ile sayfaya IN ise kontrol edip window.onblur ile dışarı olmadığını kontrol edebilirsiniz.

Evet, bu mümkün.

;)

Cevap 14/10/2010 saat 00:18
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more