Bagaimana saya bisa melakukan sesuatu seperti ini:
<script type="text/javascript">
$(document).ready(function () {
if(window.location.contains("franky")) // This doesn't work, any suggestions?
{
alert("your url contains the name franky");
}
});
</script>
javascript
jquery
url
Tanpa Rayuan
sumber
sumber
"window.location.contains is not a function"
Jawaban:
Anda perlu menambahkan properti href dan periksa
indexOf
bukannyacontains
sumber
window.location.hash
tidakwindow.location.href
. Cukup tukar nilai-nilai itu dalam fungsi OP..href.indexOf("franky")
dapat mengembalikan nilai 0 jika.href
dimulai dengan "franky". Tentu saja, dalam hal ini, tidak pernah seperti.href
biasanya dimulai dengan protokol, biasanya "http:" atau "file:". Meskipun demikian, Anda harus SELALU menggunakan> -1,> = 0 atau, preferensi saya,! == - 1 saat membandingkan dengan hasilindexOf()
.akan melakukannya. Atau, Anda bisa menggunakan regexp:
sumber
Anda akan menggunakan
indexOf
seperti ini:Perhatikan juga penambahan
href
untuk string jika tidak Anda akan lakukan:sumber
seperti itu:
sumber
window.location.href
adalah alias dariwindow.location
developer.mozilla.org/en-US/docs/Web/API/Window.locationif
pernyataan. Untuk memastikan keduanya, Anda dapat menggunakan operator AND, yang&&
dalam Javascript:if( window.location.href.indexOf("cart") > -1 && window.location.href.indexOf("box") > -1 )
Untuk memeriksa apakah memiliki satu atau nilai lainnya, gunakan operator OR, yang merupakan dua karakter pipa||
if( window.location.href.indexOf("cart") > -1 || window.location.href.indexOf("box") > -1 )
window.location
bukan String, tetapi memilikitoString()
metode. Jadi Anda bisa melakukannya seperti ini:atau
Dari dokumen Mozilla lama :
sumber
Cara regex:
Atau dalam pernyataan sederhana yang dapat Anda gunakan:
Saya menggunakan ini untuk menguji apakah situs web berjalan secara lokal atau di server:
Ini memeriksa apakah href mengandung
192.168
ataulocalhost
DAN diikuti oleh:1337
.Seperti yang Anda lihat, menggunakan regex memiliki kelebihan dibandingkan solusi lain ketika kondisinya menjadi sedikit rumit.
sumber
if(/franky/.test(location.href)) { /* regex matched */ }
jika saya tidak melakukan apa-apa dengan pertandingan.test
jelas lebih bersih daripadamatch
dalam hal ini.document.URL
harus membuat AndaURL
dansumber
Coba ini, lebih pendek dan berfungsi persis seperti
window.location.href
:juga jika Anda ingin memeriksa URL sebelumnya:
sumber
document.referrer
sepenuhnya tidak relevan dengan pertanyaan.Lebih mudah didapat
sumber
Coba ini:
sumber
Coba indexOf
Anda juga dapat mencoba mencari (untuk ekspresi reguler)
sumber
sumber
Saya suka membuat
boolean
dan menggunakannya secara logisif
.sumber
Masukkan file js Anda
sumber
~
, jadi saya mencarinya: "~
adalah trik untuk mengubahindexOf()
nilai pengembalian yang ditemukan menjadi benar (sementara menjadikannya tidak ditemukan sebagai kepalsuan). Jika tidak, orang menggunakannya untuk efek sampingnya memotong angka ..." - stackoverflow.com/a/12299678/3917091Ekspresi Reguler akan lebih optimal bagi banyak orang karena batasan kata
\b
atau perangkat serupa. Batas kata terjadi ketika salah0-9
,a-z
,A-Z
,_
berada di sisi dari pertandingan berikutnya, atau ketika menghubungkan karakter alfanumerik dengan garis atau tali akhir atau awal.Jika Anda menggunakan
if(window.location.href.indexOf("sam")
, Anda akan mendapatkan kecocokan untukflotsam
dansame
, di antara kata lain.tom
akan cocok dengan tomat dan besok, tanpa regex.Membuatnya case-sensitive semudah menghapus
i
.Selanjutnya, menambahkan filter lain semudah
Mari kita bicarakan
(?:\b|_)
. RegEx biasanya didefinisikan_
sebagaiword character
sehingga tidak menyebabkan batas kata. Kami menggunakan ini(?:\b|_)
untuk menangani ini. Untuk melihat apakah ia menemukan\b
atau_
di kedua sisi string.Bahasa lain mungkin perlu menggunakan sesuatu seperti
Semua ini lebih mudah daripada mengatakannya
Citarasa Regular Expressions bahasa lain mendukung
\p{L}
tetapi javascript tidak, yang akan membuat tugas mendeteksi karakter asing lebih mudah. Sesuatu seperti[^\p{L}](filters|in|any|alphabet)[^\p{L}]
sumber
(?#comments)
dan freespacing# comments
seperti javascript. Namun, yang ini tidak sulit dibaca. // Ketika saya menggunakan regex kompleks dalam javascript, saya menyimpan salinan komentar yang dapat saya edit lol.Misalkan Anda memiliki skrip ini
Dan bentuk urlnya adalah
www.localhost.com/web_form_response.html?text_input=stack&over=flow
Teks yang ditulis untuk
<p id="response">
menjadistack
sumber
Ini akan menjadi praktik yang baik jika Anda mengonversi string menjadi lebih rendah atau huruf besar karena metode indexof () peka huruf besar-kecil. Ini akan terjadi jika pencarian Anda tidak peka terhadap huruf besar-kecil Jadi untuk pencarian yang tidak peka terhadap huruf besar-kecil akan menjadi:
sumber