【发布时间】:2019-10-02 22:47:18
【问题描述】:
尝试为特定网站编写广告拦截器。
我已经有了删除主页上广告的代码,但它仍然可以工作,例如:电影页面。这会导致包含海报和所有内容的信息部分被删除。所以,我只希望这段特定的代码在主页上运行。可以是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,它似乎适用于每个页面加载,但似乎代码仍在其他子域上运行。
我希望此代码仅在主页上运行。对于其他人,我将编写另一个自定义脚本,该脚本仅适用于电影子域。
我想我错过了一些重要的东西。
【问题讨论】:
-
||不能这样工作。您需要根据每个值检查原始变量。 URL 也以 http:// 或 https:// 开头。 -
好的,所以我需要保存第一个url并进行比较?如果我马上去电影页面呢?
-
不是我的意思。示例:var url = changeInfo.url; if (!url) { return } if (url ===
'https://net.adjara.com/'|| url ==='https://net.adjara.com/Home') { ...... } -
不起作用:/
-
当然你需要正确调整它。
标签: javascript html css google-chrome google-chrome-extension