Javascript — если URL-адрес содержит X, игнорируйте скрипт, иначе запускайте скрипт

Я новичок в Javascript, и я не могу заставить скрипт запускаться/не запускаться на определенных страницах.

У меня есть этот скрипт на моей главной странице, чтобы скрыть и показать контент:

$(document).ready(function() {
$(".hidden").hide();
$(".show").html("[+]");
$(".show").click(function() {
    if (this.className.indexOf('clicked') != -1 ) {
        $(this).prev().slideUp(0);
        $(this).removeClass('clicked')
        $(this).html("[+]");
        }
        else {
        $(this).addClass('clicked')
        $(this).prev().slideDown(0);
        $(this).html("[–]");
        }
    });
});

Мне нужна такая кодировка:

если URL-адрес содержит «/post/», игнорируйте скрипт, иначе запустите скрипт

Это должно быть простое решение. Я просто не могу заставить его работать. Какие-либо предложения?


person user1438432    schedule 05.06.2012    source источник


Ответы (2)


if, который вы ищете, это:

if (window.location.indexOf('/post/') == -1){
    // don't run, the '/post/' string wasn't found
}
else {
    // run
}

indexOf() возвращает -1, если строка не найдена, иначе возвращает индекс в строке, где найден первый символ строки.

Приведенное выше переписано с добавлением здравого смысла, предоставленного Джейсоном (в комментариях ниже):

if (window.location.indexOf('/post/') > -1){
    // run, the '/post/' string was found
}
person David says reinstate Monica    schedule 05.06.2012
comment
Я бы написал это как if (window.location.indexOf('/post/') >= 0){ // code to run here }, чтобы избежать (сбивающего с толку) пустого блока if. - person Jason Suárez; 06.06.2012

Согласно этому ответу,

window.location — это объект, а не строка, поэтому у него нет функции indexOf.

... Так что window.location.indexOf() никогда не сработает.

Однако, руководствуясь тем же ответом, вы можете преобразовать URL-адрес в строку с window.location.href, чтобы затем выполнить поиск. Или вы можете получить доступ к частям URL-адреса, например:

if (window.location.pathname === '/about/faculty/'){ ... } для точного совпадения

or

window.location.pathname.split( '/' ), чтобы получить части URL-адреса, как указано в этом ответе.

person Peter Arthur    schedule 23.10.2017