如何比较当前活动标签的网址

时间:2019-10-02 10:40:58

标签: javascript html css google-chrome google-chrome-extension

尝试为特定网站编码广告拦截器。

我已经有删除主页上广告的代码,但是仍然可以在例如电影页面上使用。这将导致删除带有海报和所有内容的信息部分。因此,我只希望这段特定代码在Homepage上运行。可以是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 个答案:

答案 0 :(得分:1)

您似乎已经接近。如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您正在使用正则表达式,^表示您要检查字符串的开头,然后拥有要匹配的所需字符串。 / p>

当然,正如我所写的那样,这可能无法完全适合您的情况。您的字符串可以以“ http://”或“ https://”或其他任何字符开头。您可以选择使用a different regex,也可以查找the String.prototype.includes() method。您知道传入的字符串看起来比我更好!

祝你好运!