Saya mencoba menghapus semuanya setelah "?" di url browser pada dokumen siap.
Inilah yang saya coba:
jQuery(document).ready(function($) {
var url = window.location.href;
url = url.split('?')[0];
});
Saya dapat melakukan ini dan melihatnya bekerja di bawah:
jQuery(document).ready(function($) {
var url = window.location.href;
alert(url.split('?')[0]);
});
javascript
jquery
Derek
sumber
sumber
.ready()
? Anda tidak perlu menunggu untuk mengarahkan ulang ke URL baru atau hanya menggunakan.pushState()
seperti yang disarankan Joraid.Jawaban:
TL; DR
1- Untuk memodifikasi URL saat ini dan menambahkan / inject itu (URL dimodifikasi baru) sebagai URL entri baru ke daftar sejarah, penggunaan
pushState
:2- Untuk mengganti URL saat ini tanpa menambahkannya ke entri riwayat, gunakan
replaceState
:3 - Bergantung pada logika bisnis Anda ,
pushState
akan berguna dalam kasus-kasus seperti:Anda ingin mendukung tombol kembali browser
Anda ingin membuat sebuah baru URL, tambahkan / insert / mendorong URL baru untuk sejarah entri, dan membuatnya URL saat ini
memungkinkan pengguna untuk menandai halaman dengan parameter yang sama (untuk menampilkan konten yang sama)
untuk pemrograman mengakses dengan data yang melalui
stateObj
kemudian mengurai dari jangkarSeperti yang saya mengerti dari komentar Anda, Anda ingin membersihkan URL Anda tanpa mengarahkan ulang.
Perhatikan bahwa Anda tidak dapat mengubah seluruh URL. Anda bisa mengubah apa yang muncul setelah nama domain. Ini berarti bahwa Anda tidak dapat mengubah
www.example.com/
tetapi Anda dapat mengubah apa yang terjadi setelahnya.com/
Latar Belakang
Kita bisa menggunakan:
1- Metode pushState () jika Anda ingin menambahkan URL yang dimodifikasi baru ke entri riwayat.
2- Metode replaceState () jika Anda ingin memperbarui / mengganti entri riwayat saat ini .
Kode
Untuk melakukan itu saya akan menggunakan metode The pushState () untuk contoh ini yang bekerja mirip dengan format berikut:
Jangan ragu untuk menggantinya
pushState
denganreplaceState
berdasarkan pada kebutuhan Anda.Anda dapat mengganti paramter
"object or string"
dengan{}
dan"Title"
dengandocument.title
demikian statment akhir akan menjadi:Hasil
Dua baris kode sebelumnya akan membuat URL seperti:
Untuk menjadi:
Tindakan
Sekarang mari kita coba pendekatan yang berbeda. Katakanlah Anda perlu menyimpan nama file. Nama file muncul setelah yang terakhir
/
dan sebelum string kueri?
.Akan:
Sesuatu seperti ini akan membuatnya bekerja:
MEMPERBARUI:
Untuk satu penggemar liner, coba ini di konsol / pembakar Anda dan URL halaman ini akan berubah:
URL halaman ini akan berubah dari:
Untuk
Catatan: seperti yang ditunjukkan oleh Samuel Liew dalam komentar di bawah, fitur ini hanya diperkenalkan untuk
HTML5
.Pendekatan alternatif sebenarnya untuk mengarahkan ulang halaman Anda (tetapi Anda akan kehilangan string kueri `? ', Apakah masih diperlukan atau data telah diproses?).
sumber
replaceState
sepertinya lebih cocok, tetapipushState
akan bekerja juga, itu sampai Anda mulai mengklik tombol kembali dan maju di browser dan Anda menyadari ada alasan ada seluruh perpustakaan untuk bekerja dengan API Sejarah.url.substring(url.lastIndexOf('/') + 1);
sama sekali.url.split("?")[0]
akan mendapatkan bagian sebelum tanda tanya pertama yang saya pikir OP minta. Pertanyaan OP bertanya: "Saya mencoba menghapus semuanya setelah"? "Di url browser".Ini semua menyesatkan, Anda tidak ingin menambahkan ke riwayat peramban kecuali jika Anda ingin pergi ke halaman lain dalam satu aplikasi halaman. Jika Anda ingin menghapus parameter tanpa perubahan pada halaman, Anda harus menggunakan:
sumber
cara sederhana untuk melakukan ini, bekerja di halaman mana saja, membutuhkan HTML 5
sumber
Saya percaya metode terbaik dan paling sederhana untuk ini adalah:
sumber
jika saya memiliki tag khusus di akhir URL saya seperti: http://domain.com/?tag=12345 Berikut ini adalah kode di bawah ini untuk menghapus tag itu setiap kali muncul di URL:
Ini memberi ide untuk menghapus satu atau lebih (atau semua) parameter dari URL
Dengan window.location.pathname Anda pada dasarnya mendapatkan semuanya sebelum '?' di url.
sumber
Saya ingin menghapus hanya satu param
success
. Inilah cara Anda dapat melakukan ini:Ini juga bertahan
#hash
.URLSearchParams
tidak akan berfungsi pada IE, tetapi sedang dikerjakan untuk Edge . Anda bisa menggunakan polyfill atau bisa menggunakan fungsi pembantu naif untuk dukungan IE:Ini dapat digunakan seperti:
sumber
take_param
sudah melakukan hal itu, tetapi Anda dapat membuatURLSearchParams
melakukan hal yang sama dengan melakukan:history.replaceState(null, '', (params ? '?' + params : '') + location.hash)
. Atau sesuka Anda.Solusi yang lebih baik:
sumber
Tidak ada solusi yang benar-benar berfungsi untuk saya, berikut adalah fungsi yang kompatibel dengan IE11 yang juga dapat menghapus beberapa parameter:
sumber
sumber
Untuk menghapus semua parameter, tanpa melakukan refresh halaman, DAN jika Anda menggunakan HTML5, maka Anda dapat melakukan ini:
history.pushState({}, '', 'index.html' ); //replace 'index.html' with whatever your page name is
Ini akan menambah entri dalam riwayat browser. Anda juga dapat mempertimbangkan
replaceState
jika Anda tidak ingin menambahkan entri baru dan hanya ingin mengganti entri lama.sumber
Dalam penggunaan jquery <
sumber
Berikut ini adalah ES6 one liner yang mempertahankan hash lokasi dan tidak mencemari riwayat browser dengan menggunakan
replaceState
:sumber
location
aliaswindow.location
, sehingga fungsi memiliki akses ke globallocation
karenal
sisanya adalah dasar penggantiState seperti dalam semua jawaban lainnya, ia menyatukan pathname dan hash (example.com/#hash) sebagai url baru. Semoga bisa dicerna, jika tidak beri tahu saya 😉window.history.replaceState({}, '', location.pathname + location.hash)
? ;)location
2 kali 😁 namun tidak perlu menugaskannya ke variabel is atau ada yang lebih dari itu Joey?