Saya ingin mengambil string
var a = "http://example.com/aa/bb/"
dan mengolahnya menjadi objek sedemikian rupa
a.hostname == "example.com"
dan
a.pathname == "/aa/bb"
javascript
url
freddiefujiwara
sumber
sumber
hostname
danpathname
langsung darilocation
objek.Jawaban:
Cara modern:
Mengembalikan objek dengan properti
hostname
danpathname
, bersama dengan beberapa lainnya .Argumen pertama adalah URL relatif atau absolut; jika itu relatif, maka Anda perlu menentukan argumen kedua (URL dasar). Misalnya, untuk URL relatif ke halaman saat ini:
Selain browser, API ini juga tersedia di Node.js sejak v7, hingga
require('url').URL
.sumber
new URL('/stuff?foo=bar#baz')
->SyntaxError: Failed to construct 'URL': Invalid URL
sumber
pathname
menghapus slash utama, sementara browser lain tidak. Jadi Anda akan berakhir dengan/path
ataupath
, tergantung pada browser Anda.ditemukan di sini: https://gist.github.com/jlong/2428561
sumber
parser = location;
dan semua baris berikut berfungsi. Sudah mencoba di Chrome dan IE9 sekarang.pathname
tidak termasuk garis miring di IE. Sosok pergi. : Dhttp:
bahkan jika Anda lulus hanyadomain.com
ke href (tanpa protokol apa pun). Saya ingin menggunakan ini untuk memeriksa apakah protokolnya hilang, dan jika demikian saya bisa menambahkannya, tetapi mengasumsikan http: jadi tidak dapat menggunakannya untuk tujuan ini.Berikut adalah fungsi sederhana menggunakan regexp yang meniru
a
perilaku tag.Pro
Cons
-
-
EDIT:
Berikut ini rincian ekspresi reguler
sumber
mengembalikan currentUrl.
Jika Anda ingin meneruskan string Anda sebagai url ( tidak berfungsi di IE11 ):
Maka Anda dapat menguraikannya seperti:
sumber
Jawaban freddiefujiwara cukup bagus tetapi saya juga perlu mendukung URL relatif dalam Internet Explorer. Saya datang dengan solusi berikut:
Sekarang gunakan untuk mendapatkan properti yang dibutuhkan:
Contoh JSFiddle: http://jsfiddle.net/6AEAB/
sumber
var locationHost = (location.port !== '80' && location.port !== '443') ? location.host : location.hostname;
var locationOrigin = location.protocol + '//' + locationHost;
js-uri (tersedia di Google Code) mengambil URL string dan menyelesaikan objek URI darinya:
sumber
Bagaimana dengan ekspresi reguler sederhana?
sumber
//user:[email protected]/path/x?y=z
dan Anda akan melihat mengapa ekspresi reguler yang sederhana tidak memotongnya. Sekarang melempar sesuatu yang tidak valid ke dalamnya dan itu harus menyelamatkan dengan cara yang dapat diprediksi juga.hari ini saya menemukan masalah ini dan saya menemukan: URL - MDN Web APIs
Pengembalian ini:
Berharap kontribusi pertama saya membantu Anda!
sumber
Ini adalah versi yang saya salin dari https://gist.github.com/1847816 , tetapi ditulis ulang sehingga lebih mudah untuk dibaca dan didebug. Tujuan menyalin data jangkar ke variabel lain bernama "hasil" adalah karena data jangkar cukup panjang, dan dengan demikian menyalin sejumlah nilai ke hasil akan membantu menyederhanakan hasil.
sumber
Penguraian URL lintas-browser , bekerja di sekitar masalah jalur relatif untuk IE 6, 7, 8 dan 9:
Penggunaan ( demo JSFiddle di sini ):
Hasil:
sumber
Bagi mereka yang mencari solusi modern yang berfungsi di IE, Firefox, DAN Chrome:
Tidak satu pun dari solusi ini yang menggunakan elemen hyperlink akan berfungsi sama di chrome.Jika Anda memberikan url yang tidak valid (atau kosong) ke chrome, itu akan selalu mengembalikan host tempat skrip dipanggil. Jadi di IE Anda akan mendapatkan kosong, sedangkan di Chrome Anda akan mendapatkan localhost (atau apa pun).
Jika Anda mencoba melihat pengarah, ini menipu. Anda harus memastikan bahwa host yang Anda dapatkan ada di url asli untuk menangani ini:
sumber
Cara AngularJS - biola di sini: http://jsfiddle.net/PT5BG/4/
sumber
$document
dan$window
layananSolusi sederhana dan kuat menggunakan pola modul. Ini termasuk perbaikan untuk IE di mana
pathname
tidak selalu memiliki forward-slash (/
).Saya telah membuat Gist bersama dengan JSFiddle yang menawarkan parser yang lebih dinamis. Saya sarankan Anda memeriksanya dan memberikan umpan balik.
Demo
Tampilkan cuplikan kode
Keluaran
sumber
Gunakan https://www.npmjs.com/package/uri-parse-lib untuk ini
sumber
Kenapa tidak menggunakannya?
sumber
Anda juga dapat menggunakan
parse_url()
fungsi dari Locutus proyek (mantan php.js).Kode:
Hasil:
sumber
Ia berfungsi dengan url absolut dan relatif
sumber
abc://username:[email protected]:123/path/data?key=value&key2=value2#fragid1
Berhenti menciptakan kembali roda. Gunakan https://github.com/medialize/URI.js/
sumber
Cukup gunakan pustaka url.js (untuk web dan node.js).
https://github.com/websanova/js-url
sumber
hack sederhana dengan jawaban pertama
ini dapat digunakan bahkan tanpa argumen untuk mengetahui getLocation nama host saat ini (). nama host akan memberikan nama host saat ini
sumber