Как сравнить URL текущей активной вкладки - PullRequest
0 голосов
/ 02 октября 2019

Попытка кодирования рекламного блокировщика для определенного веб-сайта.

У меня уже есть код, который удаляет рекламу на главной странице, но он все еще работает, например, на страницах с фильмами. И это приводит к удалению информационного раздела с постером и всем остальным. Итак, я хочу, чтобы этот конкретный фрагмент кода запускался на домашней странице. это может быть https://net.adjara.com/ или https://net.adjara.com/Home. Этот веб-сайт является AJAX, он загружается один раз и все.

Это код, который удаляет рекламу на главной странице:

chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
    if (request.message === 'Homepage') {

    var timer = setInterval(deletor, 1);

    function deletor() {
        timer;
        var slider = document.querySelector("#slider-con");
        var bannerTop = document.querySelector("#MainContent > div:nth-child(2)")
        var bannerMiddle = document.querySelector("#MainContent > iframe");
        var bannerRandom = document.querySelector("#MainContent > div:nth-child(3)");


            if (slider) {
                slider.parentNode.removeChild(slider);
            }

            if (bannerTop) {
                bannerTop.parentNode.removeChild(bannerTop);
            }

            if (bannerMiddle) {
                bannerMiddle.parentNode.removeChild(bannerMiddle);
            }

            if (bannerRandom) {
                bannerRandom.parentNode.removeChild(bannerRandom);
            }
};
    } else {
        return false;
    }
})

Это скрипт bg, который отправляет сообщение:

chrome.tabs.onUpdated.addListener(function
  (tabId, changeInfo, tab) {
    // read changeInfo data and do something with it (like read the url)
    if (changeInfo.url == "net.adjara.com" || "net.adjara.com/Home" || "net.adjara.com/Home/") {
      chrome.tabs.sendMessage( tabId, {
        message: "Homepage",
        url: changeInfo.url
      })
      console.log("successful!");
    } else if (changeInfo.url == "net.adjara.com/Movie/main*" || "net.adjara.come/Movie/*"){
        console.log("Movie page");
    } else {
        return false;
    }
  }
);

Я добавил console.log и похоже, что он работает при каждой загрузке страницы, но также выглядит как кодвсе еще работает на других поддоменах.

Я хочу, чтобы этот код запускался только на домашней странице. Для других я напишу другой пользовательский сценарий, который будет применяться только к поддоменам фильмов.

Я думаю, что упускаю что-то важное.

1 Ответ

1 голос
/ 02 октября 2019

Похоже, ты рядом. Как упоминалось wOxxOm , ваши сравнения в ваших операторах if не совсем имеют правильный синтаксис. Чтобы правильно отформатировать несколько или несколько, попробуйте:

if (changeInfo.url == "net.adjara.com" || 
    changeInfo.url == "net.adjara.com/Home" ||
    changeInfo.url == "net.adjara.com/Home/") {
    // your code block
  }

. Вы можете трактовать сам || как начало нового оператора. Мы должны четко сказать, какие две вещи мы сравниваем для равенства между ||. Используя то, что я написал выше, вы просите ваше утверждение if проверять равенство в каждом сравнении отдельно. Затем, если одна или несколько из этих вещей верны, ваш блок кода будет выполняться. (Дополнительный совет: если у вас есть серия or утверждений, если какое-либо из них является правдой, то все верно. Логика!)

Теперь, если вы хотите проявить фантазию, вы можете выполнитьэто с регулярным выражением. Здесь вы передаете строку changeInfo.url и проверяете, что указанная строка начинается с net.adjara.com.

if (changeInfo.url.match(/^net.adjara.com/) {
   // your code block
}

Набор отметок / сообщает Javascript, что вы используете регулярное выражение, ^ говоритВы хотите проверить начало строки, а затем у вас есть желаемая строка, которой вы хотите соответствовать.

Конечно, это может не сработать для вашей ситуации, как я написал. Ваша строка может начинаться с "http://" или" https://" или чего-либо еще. Вы можете выбрать другое регулярное выражение или, возможно, вы можете посмотреть String.prototype.includes() метод . Вы знаете, как выглядят ваши входящие строки лучше, чем я!

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...