2016-03-22 20 views
1

Her aramada JavaScript kodumu www.google.com üzerinden çalıştırmaya çalışıyorum. Aradığımda ör. Kelime "stackoverflow" location.href benziyor:Neden hashchange olayı www.google.com'da çalışmıyor?

https://www.google.com/#q=stackoverflow

Yani location.search === "" ve location.hash === "#q=stackoverflow". Sonra

Ben Web Konsolu yazın: Sonra

window.addEventListener("hashchange", function() { 
    console.log("hash changed"); 
}, false); 

Ben mesela yazarsanız Arama alanına "muz" ve "Enter" tuşuna basın location.href olacaktır:

https://www.google.com/#q=banana

Ama "hashchange" olayı son Chrome ve Firefox'ta patlamaz. Web Konsolunda hiçbir şey görmeyeceğim. Ancak, konum çubuğundaki URL'yi manuel olarak https://www.google.com/#q=orange olarak değiştirirseniz veya URL'yi location.href = "https://www.google.com/#q=milk" aracılığıyla değiştirirseniz tetiklenir. Niye ya?

p.s. Www.google.com, arama alanına "Enter" a bastığınızda yeniden yüklenmez. Aslında bir tarayıcı eklentisi ve söz konusu Web Konsolunu sadece basitlik için yapıyorum.

+0

Bunu Google olmayan bir test sayfasıyla denediniz mi? –

+0

@AtesGoral Evet. Test web sayfamda 'something' seçeneğini tıklarsam, karma değişimi olayı harekete geçiyor. – traxium

+1

Ancak, google. Yeni bir istek oluşturması gereken bir form alanına giriyorsun. Bu noktada sayfa yeniden yüklenir. Form gönderim etkinliğine müdahale etmedikçe, yine de gidersiniz, sayfayı değiştirirsiniz ve herhangi bir karma değişiklik olayı tetiklemez. –

cevap

2

Google, onhashchange olayının tetiklenmesini tetiklemeyen history.pushState öğesini kullanarak değiştirildi.

İlgili konular