我在检查网站页面中的网址时遇到问题。 这就是我所拥有的。
检查确切的字符串效果很好:
var url = location.pathname;
if ("url:contains('texas-ignition-interlock')") {
$("body").addClass("texas-ppc-page");
}
但是当我的页面网址含有相似的单词时,这两个类都被添加到两个页面中。
var url = location.pathname;
if ("url:contains('texas-ignition-interlock-device')") {
$("body").addClass("texas-ppc-device-page");
}
我也尝试了indexOf
,并且对名称相似的网页没有效果。
这是我尝试过的,这适用于第一个例子。第二个例子也将添加第一个类。
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");
}
现在,我仍然可以使用indexOf
版本。我只是使用类.texas-ppc-page
在一个页面上定位东西,在第二个页面上我将使用.texas-ppc-page.texas-ppc-device-page
两个类来定位。
使用JS或jQuery有更好的方法吗?
答案 0 :(得分:2)
您可以使用split(" /")将location.pathname
拆分为字符串数组。
location.pathname
与/questions/41968769/checking-for-exact-url
类似,因此将此字符串拆分为" /"将导致
["", "questions", "41968769", "checking-for-exact-url"]
现在你可以执行indexOf(""),如果字符串完全匹配,它将返回非-1值,就像在这种情况下,如果我做indexOf(" url")函数将返回-1,如果我执行indexOf(" checking-for-exact-url"),它将返回3.
答案 1 :(得分:1)
如果您希望以与您的方式类似的方式检查字符串,则可以通过https://github.com/mapbox/mapbox-gl-js/issues/3958(如下所示)使用占位符^
和$
来启动和结束正则表达式, 分别。否则,indexOf
甚至会匹配字符串的一部分。看看以下......
var url = 'texas-ignition-interlock-devices';
console.log(/^texas-ignition-interlock$/.test(url)); // false
console.log(/^texas-ignition-interlock-devices$/.test(url)); // true