webentwicklung-frage-antwort-db.com.de

Wie überprüfe ich, ob die URL eine bestimmte Zeichenfolge enthält?

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>
330
RayLoveless

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>
597
J.W.
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))
94
NickFitz

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){....}
22
Sarfraz

wie so:

    <script type="text/javascript">
        $(document).ready(function () {
            if(window.location.href.indexOf("cart") > -1) 
            {
                 alert("your url contains the name franky");
            }
        });
    </script>
22
Adrian Gonzales

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.

11
Alin Purcaru

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.

8

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) { ... }
6
sixstarpro

document.URL sollte Ihnen die URL und

if(document.URL.indexOf("searchtext") != -1) {
    //found
} else {
    //nope
} 
6
Suman

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>
4
Vishnu Dev

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> 
3
Chandu

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)
{
  ...
}
3
Yoni Baciu

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');
}
2
Ron Royston

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");
}
1
Sudharsan S

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');
                }
1
alemac852

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}]

1
Regular Joe

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

0
Dhiraj Himani