19

Aşağıdaki javascript yönlendirme kodunu ve ardından başka bir kod var.Bir javascript yönlendirmesinden sonra (code window.location.href) kod ne olur?

window.location.href = '/someurl'; 
alert('hello'); 
alert('hello again'); 

Bu, bir tarayıcı tutarsızlığına neden olur.

Firefox'ta, yönlendirilmeden önce ilk uyarı, bir saniyelik saniye için görünür durumdadır. İkinci uyarı hiç görünmez.

Kromda, her iki uyarı da açılır ve yönlendirme her iki uyarı için de tamamlandıktan sonra olur.

Yönlendirme sonrasında bu farklılıkların giderilebileceği kodla ilgili bazı kavramlar var mı? Yönlendirme eşzamansız ise, o zaman krom ne yapıyor? Ne olduğunu anlamak isterim ki, bir yönlendirmenin bazı geri aramalarda ve diğer mantığın derinliklerinde gömüldüğü daha karmaşık bir senaryoda ne yapacağımı belirleyebilirim.

+1

Yönlendirme sonrasında neden bir şey yapmak istersiniz? – Musa

+0

Her şey zamanlamaya bağlı olacaktır - konumu değiştirdiğinizde işlem/render/etc'ye ne kadar zaman harcayacağına güvenemezsiniz. –

+0

@Musa Aslında yönlendirme sonrasında hiçbir şey yapmak istemiyorum, bu yüzden bu soru ortaya çıktı. Örneğin, yönlendirme başka bir kütüphanenin kodundan tetiklenen bir geri aramada gerçekleşiyorsa, kütüphane geri aramalarımı çağırdıktan sonra kütüphane tarafından çalıştırılan başka şeyler de olabilir. Ancak, sayfayı başka bir şeyi çalıştırmadan yönlendirmek istersem, tarayıcıların yapmaya çalıştıklarına bağlı olarak normal devam etmesini önlemek için bir şeyler yapmam gerekebilir. – user1385729

cevap

10

sayfa sonraki web adrese gidene kadar tarayıcı window.location.href = 'url' sonra kod çalıştırmayı dener, bu yüzden idam edilecek kod satır sayısı tarayıcının hızına bağlıdır JavaScript oturumu için mücadele edecek

+0

Teşekkürler, bu makul görünüyor. Yönlendirmeden sonra uzun bir koşu döngüsü ekleyerek bunu denemeye çalışıyorum. Hız meselesi olsaydı, tarayıcılar döngü sırasında sadece rastgele noktalara yönelmez miydi? Hem chrome hem de firefox, döngünün içinde ne olursa olsun, tüm kodu çalıştırıyor gibi görünüyor (döngüde bir uyarı yoksa, bu durumda firefox bu noktada yönlendirmeye gider). Uzun koşu döngüsü testinin en iyi test olup olmadığından emin değilim ... – user1385729

+0

Haklısınız. Belki de hız değil, her javascript fonksiyonunun önceliği –

+0

@DaniloValente bu –

16

yaklaşan kıyamet karşısında görevini devam et. Kodlama bu şekilde tahmin edilemez olarak kabul edilir. ... ve zalimce.

+1

kullanmak zorunda sona erdi spec için ovuşturuyordum en iyi cevap bu olduğunu düşünüyorum. Davranış tanımsızdır. Sizin için – styfle

+1

+1000 efendim. – Houssni

İlgili konular