Window.location.href ve top.location.href arasındaki fark


93

Herkes bana arasındaki farkı söyleyebilir window.location.hrefve top.location.href?

Ve ayrıca hangisinin nerede kullanılacağı.

Ve mvc'de bir ajax çağrısından sonra yeniden yönlendirme yaparken hangisi daha iyi olacak?


top.location.href kullandığımda .net MVC'de yeni bir url'ye yönlendirmek zorunda olduğumu söylemeyi unuttum .. işe yararken window.location yapmadı .. nedenini de söyleyebilir misiniz ????
Eşitlikçi

Yanıtlar:


125

window.location.href geçerli sayfanın konumunu döndürür.

top.location.href(takma adıdır window.top.location.href), pencere hiyerarşisindeki en üstteki pencerenin konumunu döndürür. Bir pencerenin ebeveyni yoksa, topkendisine bir referanstır (başka bir deyişle, window=== window.top).

tophem çerçevelerle uğraşırken hem de başka sayfalar tarafından açılan pencerelerle uğraşırken kullanışlıdır. Örneğin test.html, aşağıdaki komut dosyasıyla çağrılan bir sayfanız varsa :

var newWin=window.open('about:blank','test','width=100,height=100');
newWin.document.write('<script>alert(top.location.href);</script>');

Sonuçta ortaya çıkan uyarı, test.html dosyasının tam yolunu içerecektir - about: blank değil , window.location.hrefgeri dönecektir.

Yönlendirme ile ilgili sorunuza cevap vermek için, ile gidin window.location.assign(url);


3
O çağırmak doğru mu top.location.hrefbir takma ad ait window.top.location.href? "Global" olarak adlandırılan bir değişkenin, bir özelliğin kısaltması olduğunu , windowdiğer adın ise aynı yere işaret eden bağımsız bir değişken olduğunu ima ettiğini düşündüm .
just.another.programmer

25

topnesne çerçevelerin içinde daha anlamlıdır. Bir çerçevenin içinde, windowgeçerli çerçevenin penceresini topifade ederken , çerçeveyi / çerçeveleri içeren en dıştaki pencereyi ifade eder. Yani:

window.location.href = 'somepage.html';somepage.htmlçerçevenin içine yükleme anlamına gelir .

top.location.href = 'somepage.html';somepage.htmlana tarayıcı penceresinde yükleme anlamına gelir .

Diğer iki ilginç nesne selfve parent.



7

İlki, geçmişinize "Geri" yi tıklayabileceğiniz (veya yapabilmeniz gereken) ve mevcut sayfaya geri dönebileceğiniz bir öğe ekler.

İkincisi, geçerli geçmiş öğesinin yerini alır, böylece ona geri dönemezsiniz.

Bakınız window.location:

  • assign(url): Belgeyi sağlanan URL'ye yükleyin.

  • replace(url): Mevcut belgeyi, sağlanan URL’dekiyle değiştirin. assign()Yöntemden farkı replace(), geçerli sayfayı kullandıktan sonra oturum geçmişine kaydedilmeyecek olmasıdır, bu da kullanıcının geri gitmek için Geri düğmesini kullanamayacağı anlamına gelir.

window.location.href = url;

tercih edilir:

window.location = url;

CORS sorunu için işe yaramıyor ... bu nasıl çözülür?
Pra_A
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.