Perbedaan antara window.location.href dan top.location.href

93

Adakah yang bisa memberi tahu saya perbedaan antara window.location.hrefdan top.location.href?

Dan juga di mana harus menggunakan yang mana.

Dan mana yang lebih baik saat mengalihkan setelah panggilan ajax di mvc?

Egaliter
sumber
saya lupa menyebutkan bahwa saya harus mengarahkan ke url baru di .net MVC .. ketika saya menggunakan top.location.href itu bekerja sedangkan window.location tidak .. dapatkah u juga mengatakan alasannya ????
Egaliter

Jawaban:

125

window.location.href mengembalikan lokasi halaman saat ini.

top.location.href(yang merupakan alias dari window.top.location.href) mengembalikan lokasi jendela paling atas dalam hierarki jendela. Jika sebuah jendela tidak memiliki induk, itu topadalah referensi untuk dirinya sendiri (dengan kata lain, window=== window.top).

topberguna baik saat Anda berurusan dengan bingkai dan saat berurusan dengan jendela yang telah dibuka oleh halaman lain. Misalnya, jika Anda memiliki halaman yang dipanggil test.htmldengan skrip berikut:

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

Lansiran yang dihasilkan akan memiliki jalur lengkap ke test.html - bukan tentang: kosong, yang window.location.hrefakan ditampilkan.

Untuk menjawab pertanyaan Anda tentang pengalihan, lanjutkan dengan window.location.assign(url);

josh3736
sumber
3
Apakah akurat untuk memanggil top.location.hrefsebuah alias dari window.top.location.href? Saya pikir apa yang disebut variabel "global" sebenarnya adalah singkatan dari propertiwindow sedangkan alias menyiratkan itu adalah variabel independen yang menunjuk ke tempat yang sama.
just.another.programmer
25

topobjek lebih masuk akal di dalam bingkai. Di dalam bingkai, windowmengacu pada jendela bingkai saat ini sementara topmengacu pada jendela terluar yang berisi bingkai. Begitu:

window.location.href = 'somepage.html';berarti memuat somepage.htmldi dalam bingkai.

top.location.href = 'somepage.html';berarti memuat somepage.htmldi jendela browser utama.

Dua objek menarik lainnya adalah selfdan parent.

Salman A
sumber
7

Yang pertama menambahkan item ke riwayat Anda sehingga Anda dapat (atau seharusnya dapat) mengklik "Kembali" dan kembali ke halaman saat ini.

Yang kedua menggantikan item riwayat saat ini sehingga Anda tidak bisa kembali ke sana.

Lihat window.location:

  • assign(url): Muat dokumen di URL yang disediakan.

  • replace(url): Ganti dokumen saat ini dengan yang ada di URL yang disediakan. Perbedaan dari assign()metode ini adalah bahwa setelah menggunakan replace()halaman saat ini tidak akan disimpan dalam riwayat sesi, artinya pengguna tidak akan dapat menggunakan tombol Kembali untuk menavigasi ke sana.

window.location.href = url;

lebih disukai daripada:

window.location = url;
Sachin R
sumber
Untuk masalah CORS tidak berfungsi ... bagaimana mengatasi ini?
Pra_A