Wie könnte ich so etwas machen:
<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
quelle
quelle
"window.location.contains is not a function"
Antworten:
Sie müssen die Eigenschaft href hinzufügen und
indexOf
stattdessen überprüfencontains
quelle
window.location.hash
nichtwindow.location.href
. Tauschen Sie diese Werte einfach in der OP-Funktion aus..href.indexOf("franky")
ein Wert von 0 zurückgegeben werden kann, wenn.href
mit "franky" begonnen wird. In diesem Fall.href
beginnt dies natürlich nie wie immer mit dem Protokoll, normalerweise "http:" oder "file:". Trotzdem sollten Sie IMMER> -1,> = 0 oder, meine Präferenz ,! == - 1 verwenden, wenn Sie mit dem Ergebnis von vergleichenindexOf()
.würde es tun. Alternativ können Sie einen regulären Ausdruck verwenden:
quelle
Sie würden so verwenden
indexOf
:Beachten Sie auch das Hinzufügen von
href
für die Zeichenfolge, da Sie sonst Folgendes tun würden:quelle
wie so:
quelle
window.location.href
ist ein Alias vonwindow.location
developer.mozilla.org/en-US/docs/Web/API/Window.locationif
Anweisung einfach eine weitere Bedingung hinzufügen . Um sicherzustellen, dass beide vorhanden sind, können Sie den Operator AND&&
in Javascript verwenden:if( window.location.href.indexOf("cart") > -1 && window.location.href.indexOf("box") > -1 )
Um zu überprüfen, ob der eine oder andere Wert vorhanden ist, verwenden Sie den Operator OR, der aus zwei Pipe-Zeichen besteht||
if( window.location.href.indexOf("cart") > -1 || window.location.href.indexOf("box") > -1 )
window.location
ist kein String, hat aber einetoString()
Methode. So können Sie es machen:oder
Aus den alten Mozilla-Dokumenten :
quelle
Der Regex-Weg:
Oder in einer einfachen Aussage könnten Sie verwenden:
Ich verwende dies, um zu testen, ob die Website lokal oder auf einem Server ausgeführt wird:
Dies prüft, ob die href entweder
192.168
oderlocalhost
AND enthält, gefolgt von:1337
.Wie Sie sehen können, hat die Verwendung von Regex seine Vorteile gegenüber den anderen Lösungen, wenn die Bedingung etwas schwieriger wird.
quelle
if(/franky/.test(location.href)) { /* regex matched */ }
wenn ich mit den Streichhölzern nichts mache.test
ist definitiv sauberer alsmatch
in diesem Fall.document.URL
sollte dir dasURL
und bringenquelle
Versuchen Sie dies, es ist kürzer und funktioniert genau wie
window.location.href
:auch wenn Sie die vorherige URL überprüfen möchten:
quelle
document.referrer
zu für die Frage völlig irrelevant.Einfacher geht es
quelle
Versuche dies:
quelle
Versuchen Sie indexOf
Sie können auch versuchen zu suchen (nach regulären Ausdrücken)
quelle
quelle
Ich mag es, eine zu erstellen
boolean
und diese dann in einer logischen zu verwendenif
.quelle
Fügen Sie Ihre js-Datei ein
quelle
~
, also habe ich es nachgeschlagen: "Es~
ist ein Trick,indexOf()
den gefundenen Rückgabewert in wahr zu verwandeln (während er nicht als falsch gefunden wird). Die Leute verwenden ihn ansonsten wegen seiner Nebenwirkung, Zahlen abzuschneiden ..." - stackoverflow.com/a/12299678/3917091Reguläre Ausdrücke sind aufgrund von Wortgrenzen
\b
oder ähnlichen Geräten für viele Menschen optimaler . Wortgrenzen auftreten , wenn eine von0-9
,a-z
,A-Z
,_
auf sind die Seite des nächsten Spiels, oder wenn ein alphanumerisches Zeichen Connects zu Zeile oder Zeichenfolge Ende oder am Anfang.Wenn Sie verwenden
if(window.location.href.indexOf("sam")
, erhalten Sie Übereinstimmungen fürflotsam
undsame
unter anderem.tom
würde zu Tomate und morgen passen, ohne Regex.Die Groß- und Kleinschreibung zu beachten ist so einfach wie das Entfernen der
i
.Das Hinzufügen weiterer Filter ist so einfach wie
Reden wir darüber
(?:\b|_)
. RegEx wird normalerweise_
als definiert,word character
sodass keine Wortgrenze entsteht. Wir nutzen dies,(?:\b|_)
um damit umzugehen. Um zu sehen, ob es entweder\b
oder_
auf beiden Seiten der Zeichenfolge findet.Andere Sprachen müssen möglicherweise so etwas wie verwenden
All dies ist einfacher als zu sagen
Die Geschmacksrichtungen regulärer Ausdrücke in anderen Sprachen werden unterstützt
\p{L}
, Javascript jedoch nicht. Dies würde die Erkennung von Fremdzeichen erheblich erleichtern. Etwas wie[^\p{L}](filters|in|any|alphabet)[^\p{L}]
quelle
(?#comments)
und freiberuflich# comments
wie Javascript. Dieser ist jedoch nicht schwer zu lesen. // Wenn ich einen komplexen regulären Ausdruck in Javascript verwende, behalte ich eine kommentierte Kopie, die ich bearbeiten kann lol.Angenommen, Sie haben dieses Skript
Und die URL-Form ist
www.localhost.com/web_form_response.html?text_input=stack&over=flow
Der Text, an den geschrieben wird,
<p id="response">
wird seinstack
quelle
Es wird empfohlen, die Zeichenfolge in Klein- oder Großbuchstaben umzuwandeln, da bei der indexof () -Methode zwischen Groß- und Kleinschreibung unterschieden wird. Dies ist der Fall, wenn Ihre Suche nicht zwischen Groß- und Kleinschreibung unterscheidet. Bei einer Suche, bei der die Groß- und Kleinschreibung nicht berücksichtigt wird, gilt Folgendes:
quelle