Jak mogę zrobić coś takiego:
<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
RayLoveless
źródło
źródło
"window.location.contains is not a function"
Odpowiedzi:
Musisz dodać właściwość href i sprawdzić
indexOf
zamiastcontains
źródło
window.location.hash
niewindow.location.href
. Po prostu zamień te wartości w funkcji OP..href.indexOf("franky")
może zwrócić wartość 0, jeśli.href
zaczyna się od „franky”. Oczywiście w tym przypadku nigdy nie.href
zaczyna się tak jak zawsze od protokołu, zwykle „http:” lub „file:”. Mimo to powinieneś ZAWSZE używać> -1,> = 0 lub, według moich preferencji,! == - 1 w porównaniu z wynikiemindexOf()
.zrobiłbym to. Alternatywnie możesz użyć wyrażenia regularnego:
źródło
Użyłbyś
indexOf
tak:Zwróć także uwagę na dodanie
href
ciągu, w przeciwnym razie zrobiłbyś:źródło
tak:
źródło
window.location.href
to pseudonimwindow.location
developer.mozilla.org/en-US/docs/Web/API/Window.locationif
wyciągu. Aby upewnić się, że ma oba, możesz użyć operatora AND, który jest&&
w JavaScript:if( window.location.href.indexOf("cart") > -1 && window.location.href.indexOf("box") > -1 )
Aby sprawdzić, czy ma jedną lub drugą wartość, użyj operatora OR, który jest dwoma znakami potoku||
if( window.location.href.indexOf("cart") > -1 || window.location.href.indexOf("box") > -1 )
window.location
nie jest ciągiem, ale matoString()
metodę. Możesz to zrobić w ten sposób:lub
Ze starych dokumentów Mozilli :
źródło
Sposób wyrażenia regularnego:
Lub w prostym zestawieniu, którego możesz użyć:
Używam tego do sprawdzenia, czy witryna działa lokalnie, czy na serwerze:
Sprawdza, czy href zawiera albo,
192.168
czylocalhost
AND:1337
.Jak widać, użycie wyrażenia regularnego ma swoje zalety w porównaniu z innymi rozwiązaniami, gdy warunek staje się nieco trudniejszy.
źródło
if(/franky/.test(location.href)) { /* regex matched */ }
jeśli nie robię nic z dopasowaniami.test
jest zdecydowanie czystszy niżmatch
w tym przypadku.document.URL
powinienem dać ciURL
iźródło
Spróbuj tego, jest krótszy i działa dokładnie tak jak
window.location.href
:także jeśli chcesz sprawdzić poprzedni adres URL:
źródło
document.referrer
są całkowicie nieistotne dla pytania.Łatwiej to robi
źródło
Spróbuj tego:
źródło
Wypróbuj indexOf
Możesz także spróbować wyszukać (wyrażenia regularne)
źródło
źródło
Lubię tworzyć
boolean
a następnie używać tego w logiczny sposóbif
.źródło
Wstaw plik js
źródło
~
, więc spojrzałem na to: „~
jest sztuczką, aby przekształcićindexOf()
znalezioną wartość zwracaną w prawdę (jednocześnie czyniąc ją niezrozumiałą jako fałsz). Ludzie inaczej używają jej ze względu na efekt uboczny obcięcia liczb ...” - stackoverflow.com/a/12299678/3917091Wyrażenia regularne będą bardziej optymalne dla wielu osób ze względu na granice słów
\b
lub podobne urządzenia. Granice słów wystąpić, gdy którykolwiek z0-9
,a-z
,A-Z
,_
są na tej stronie następnego meczu, lub gdy alfanumerycznym łączy postać do linii lub na końcu lub na początku łańcucha.Jeśli używasz
if(window.location.href.indexOf("sam")
, dostaniesz wyniki dlaflotsam
isame
, między innymi słowami.tom
pasuje do pomidorów i jutra, bez wyrażenia regularnego.Rozróżnianie wielkości liter jest tak proste, jak usunięcie
i
.Ponadto dodawanie innych filtrów jest tak proste, jak
Porozmawiajmy o tym
(?:\b|_)
. RegEx zazwyczaj definiuje_
jakoword character
tak, że nie powoduje granicy słowa. Używamy tego,(?:\b|_)
aby sobie z tym poradzić. Aby sprawdzić, czy znajdzie\b
albo_
po dowolnej stronie ciągu.Inne języki mogą wymagać użycia czegoś takiego
Wszystko to jest łatwiejsze niż mówienie
Smaki innych wyrażeń w innych językach obsługują,
\p{L}
ale javascript nie obsługuje, co znacznie ułatwi wykrywanie obcych znaków. Coś jak[^\p{L}](filters|in|any|alphabet)[^\p{L}]
źródło
(?#comments)
i spacji# comments
jak javascript. Jednak ten nie jest trudny do odczytania. // Kiedy używam złożonego wyrażenia regularnego w javascript, zachowuję skomentowaną kopię, którą mogę edytować lol.Załóżmy, że masz ten skrypt
A forma adresu URL jest
www.localhost.com/web_form_response.html?text_input=stack&over=flow
Tekst do
<p id="response">
będziestack
źródło
Dobrą praktyką będzie konwersja łańcucha na małe lub wielkie litery, ponieważ metoda indexof () rozróżnia małe i wielkie litery. Będzie tak, jeśli wyszukiwanie nie uwzględnia wielkości liter w umyśle. Więc wyszukiwanie, które nie rozróżnia wielkości liter, będzie następujące:
źródło