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>
Sie müssen die Eigenschaft href hinzufügen und indexOf
anstelle von contains
aktivieren.
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
if (window.location.href.indexOf("franky") > -1) {
alert("your url contains the name franky");
}
});
</script>
if (window.location.href.indexOf("franky") != -1)
würde es tun. Alternativ können Sie auch einen regulären Ausdruck verwenden:
if (/franky/.test(window.location.href))
Sie würden indexOf
wie folgt verwenden:
if(window.location.href.indexOf("franky") != -1){....}
Beachten Sie auch das Hinzufügen von href
für die Zeichenfolge, andernfalls würden Sie Folgendes tun:
if(window.location.toString().indexOf("franky") != -1){....}
wie so:
<script type="text/javascript">
$(document).ready(function () {
if(window.location.href.indexOf("cart") > -1)
{
alert("your url contains the name franky");
}
});
</script>
window.location
ist kein String, hat aber eine toString()
-Methode. So kannst du es machen:
_(''+window.location).includes("franky")
_
oder
_window.location.toString().includes("franky")
_
Aus den alten Mozilla-Dokumenten :
Standortobjekte verfügen über eine toString-Methode, die die aktuelle URL zurückgibt. Sie können window.location auch eine Zeichenfolge zuweisen. Dies bedeutet, dass Sie mit window.location in den meisten Fällen so arbeiten können, als wäre es eine Zeichenfolge. Manchmal, zum Beispiel wenn Sie eine String-Methode aufrufen müssen, müssen Sie explizit toString aufrufen.
Der Regex-Weg:
var matches = !!location.href.match(/franky/); //a boolean value now
Oder in einer einfachen Aussage, die Sie verwenden könnten:
if (location.href.match(/franky/)) {
Ich benutze dies, um zu testen, ob die Website lokal oder auf einem Server ausgeführt wird:
location.href.match(/(192.168|localhost).*:1337/)
Dies prüft, ob das href entweder 192.168
oder localhost
enthält UND von :1337
gefolgt wird.
Wie Sie sehen, hat die Verwendung von Regex seine Vorteile gegenüber den anderen Lösungen, wenn die Bedingungen etwas schwieriger werden.
Probieren Sie es aus, es ist kürzer und funktioniert genauso wie window.location.href
:
if (document.URL.indexOf("franky") > -1) { ... }
auch wenn Sie die vorherige URL überprüfen möchten:
if (document.referrer.indexOf("franky") > -1) { ... }
document.URL
sollte Ihnen die URL
und
if(document.URL.indexOf("searchtext") != -1) {
//found
} else {
//nope
}
Einfacher geht es nicht
<script type="text/javascript">
$(document).ready(function () {
var url = window.location.href;
if(url.includes('franky')) //includes() method determines whether a string contains specified string.
{
alert("url contains franky");
}
});
</script>
Versuche dies:
<script type="text/javascript">
$(document).ready
(
function ()
{
var regExp = /franky/g;
var testString = "something.com/frankyssssddsdfjsdflk?franky";//Inyour case it would be window.location;
if(regExp.test(testString)) // This doesn't work, any suggestions.
{
alert("your url contains the name franky");
}
}
);
</script>
Versuchen Sie indexOf
if (foo.indexOf("franky") >= 0)
{
...
}
Sie können auch versuchen, nach regulären Ausdrücken zu suchen.
if (foo.search("franky") >= 0)
{
...
}
Ich mag es, ein boolean
zu erstellen und dieses dann in einem logischen if
zu verwenden.
//kick unvalidated users to the login page
var onLoginPage = (window.location.href.indexOf("login") > -1);
if (!onLoginPage) {
console.log('redirected to login page');
window.location = "/login";
} else {
console.log('already on the login page');
}
Verwenden Sie Window.location.href, um die URL in Javascript zu übernehmen. Es ist eine Eigenschaft, die Ihnen den aktuellen URL-Speicherort des Browsers anzeigt. Wenn Sie eine andere Eigenschaft festlegen, wird die Seite umgeleitet.
if (window.location.href.indexOf('franky') > -1) {
alert("your url contains the name franky");
}
Tragen Sie Ihre js-Datei ein
var url = window.location.href;
console.log(url);
console.log(~url.indexOf("#product-consulation"));
if (~url.indexOf("#product-consulation")) {
console.log('YES');
// $('html, body').animate({
// scrollTop: $('#header').offset().top - 80
// }, 1000);
} else {
console.log('NOPE');
}
Reguläre Ausdrücke sind aufgrund der Wortgrenzen \b
oder ähnlicher Geräte für viele Benutzer optimaler. Wortgrenzen treten auf, wenn eines von 0-9
, a-z
, A-Z
, _
auf dieser Seite der nächsten Übereinstimmung ist oder wenn ein alphanumerisches Zeichen Verbindet mit dem Zeilen- oder Zeichenkettenende oder -anfang.
if (location.href.match(/(?:\b|_)franky(?:\b|_)))
Wenn Sie if(window.location.href.indexOf("sam")
verwenden, erhalten Sie unter anderem Übereinstimmungen für flotsam
und same
. tom
würde zu Tomate und morgen passen, ohne Regex.
Die Berücksichtigung der Groß- und Kleinschreibung ist so einfach wie das Entfernen von i
.
Darüber hinaus ist das Hinzufügen weiterer Filter so einfach wie
if (location.href.match(/(?:\b|_)(?:franky|bob|billy|john|steve)(?:\b|_)/i))
Reden wir über (?:\b|_)
. RegEx definiert _
normalerweise als Word character
, sodass keine Wortgrenze entsteht. Wir benutzen diesen (?:\b|_)
, um damit umzugehen. Um zu sehen, ob es entweder \b
oder _
auf beiden Seiten der Zeichenfolge findet.
Andere Sprachen müssen möglicherweise etwas wie verwenden
if (location.href.match(/([^\wxxx]|^)(?:franky|bob|billy|john|steve)([^\wxxx]|$)/i))
//where xxx is a character representation (range or literal) of your language's alphanumeric characters.
All dies ist einfacher als zu sagen
var x = location.href // just used to shorten the code
x.indexOf("-sam-") || x.indexOf("-sam.") || x.indexOf(" sam,") || x.indexOf("/sam")...
// and other comparisons to see if the url ends with it
// more for other filters like frank and billy
Die Varianten der regulären Ausdrücke anderer Sprachen unterstützen \p{L}
, Javascript jedoch nicht, wodurch die Erkennung von Fremdzeichen erheblich vereinfacht würde. So etwas wie [^\p{L}](filters|in|any|alphabet)[^\p{L}]
Angenommen, Sie haben dieses Skript
<div>
<p id="response"><p>
<script>
var query = document.location.href.substring(document.location.href.indexOf("?") + 1);
var text_input = query.split("&")[0].split("=")[1];
document.getElementById('response').innerHTML=text_input;
</script> </div>
Und die URL-Form ist www.localhost.com/web_form_response.html?text_input=stack&over=flow
Der an <p id="response">
geschriebene Text ist stack