2017-01-31 7 views
1

Ich habe ein Problem, das auf den Seiten meiner Website nach der URL sucht. Das ist was ich habe.Überprüfung auf exakte URL

Überprüfung für die exakte Zeichenfolge funktioniert gut:

var url = location.pathname; 
if ("url:contains('texas-ignition-interlock')") { 
    $("body").addClass("texas-ppc-page"); 
} 

Aber wenn ich Seiten-URL mit ähnlichen Wörtern haben, wurden beide Klassen auf beiden Seiten hinzugefügt.

var url = location.pathname; 
if ("url:contains('texas-ignition-interlock-device')") { 
    $("body").addClass("texas-ppc-device-page"); 
} 

Ich habe auch versucht indexOf, und ist nicht mit ähnlichen Namen auf den Seiten tun nicht funktioniert. Dies ist, was ich versucht habe, und das funktioniert für das erste Beispiel. Im zweiten Beispiel wird auch die erste Klasse hinzugefügt.

if (window.location.href.indexOf("texas-ignition-interlock") > -1) { 
    $("body").addClass("texas-ppc-page"); 
} 

if (window.location.href.indexOf("texas-ignition-interlock-devices") > -1) { 
    $("body").addClass("texas-ppc-device-page"); 
} 

Jetzt kann ich immer noch die indexOf Version verwenden. Ich würde einfach die Sachen auf einer Seite mit der Klasse .texas-ppc-page anzielen, und auf der zweiten Seite würde ich mit beiden Klassen von .texas-ppc-page.texas-ppc-device-page zielen.

Gibt es eine bessere Möglichkeit, dies mit JS oder jQuery zu tun?

+0

warum nicht diese Klassen auf dem Server hinzufügen? – charlietfl

+0

Wir sind auf dem DNN CMS. Datenbankgesteuerte Seiten – Vcasso

Antwort

2

Sie können split ("/") verwenden, um location.pathname in String-Arrays aufzuteilen. location.pathname wird durch Aufspalten diese Zeichenfolge /questions/41968769/checking-for-exact-url so ähnlich sein, mit „/“ in

["", "questions", "41968769", "checking-for-exact-url"]

führt jetzt können Sie indexOf („“) durchzuführen, und es wird nicht Wert -1 zurück, wenn Zeichenfolge genau abgestimmt, wie in diesem Fall, wenn ich indexOf ("url") -Funktion mache, wird -1 zurückgeben, und wenn ich indexOf ("checking-for-exact-url") es wird 3.

+0

So habe ich Ihre Antwort verwendet: var url = location.pathname.split ("/"); var url1 = url.indexOf ("texas-ignition-interlock"); var url2 = url.indexOf ("Texas-Zündung-Interlock-Geräte"); if (url1 == 2) { Warnung ("firstPage"); } if (url2 == 2) { Warnung ("secondPage"); } Vielen Dank für Ihre Hilfe! – Vcasso

+0

Sie sind willkommen, froh könnte Ihnen helfen. :) –

+0

Mohd, wenn Sie die Zeit haben, überprüfen Sie die andere Antwort. Ich habe dein Beispiel mit seinen zusammen benutzt. Hat auch gut funktioniert. – Vcasso

1

Wenn Sie es vorziehen, zu untersuchen Zeichenketten ähnlich wie Sie waren, können Sie eine Regex, über .test wie unten mit den Platzhaltern ^ und $ , für Start und Ende jeweils. Andernfalls entspricht indexOf nur einem Teil der Zeichenfolge. Überprüfen Sie die folgenden ...

var url = 'texas-ignition-interlock-devices'; 

console.log(/^texas-ignition-interlock$/.test(url));   // false 
console.log(/^texas-ignition-interlock-devices$/.test(url)); // true 
+0

Ich habe die erste Antwort von Mohd benutzt. Aber das ist auch eine großartige Antwort! .test war neu für mich. Ich habe die erste (akzeptierte) Antwort mit deiner gemischt und es hat wirklich gut funktioniert. Hier ist, wie ich in Firebug getestet: var url = location.pathname.split ("/") [2]; if (/^Texas-Zündung-Verriegelung $ /. Test (URL)) { Warnung ("firstPage"); } wenn (/^Texas-Zündung-Interlock-Geräte $ /.test (url)) { alert ("secondPage"); } Ich werde Ihre Antwort aufwerten! – Vcasso