首页 > 解决方案 > Chrome 扩展将被阻止的站点转发到 html 页面,但仅当链接直接写在搜索栏中

问题描述

我正在为一个项目制作一个简单的 Chrome 扩展,但我有一个奇怪的问题。我在后台脚本中做了一个站点拦截器:

    localStorage.setItem('blocked_sites',  ["*://www.wikipedia.org/*", "*://www.change.org/*", "*://en.wikipedia.org/*"]); 
urls = localStorage.getItem('blocked_sites').split(',');

chrome.webRequest.onBeforeRequest.addListener(
function(intercept) {
    console.log(intercept.url);
    localStorage.setItem('denied_access_url', intercept.url);
     return {redirectUrl: chrome.extension.getURL("chatbot.html")};
     
},
{
    urls,
    types: ["main_frame", "sub_frame", "stylesheet", "script", "image", "object", 
"xmlhttprequest", "other"]
},
["blocking"]
);

当我通过在搜索栏中输入 url 直接访问网站时,此阻止程序起作用。该页面很好地重定向到我的 html 文件。但是如果我用谷歌搜索然后点击一个链接或点击电子邮件中的超链接,该网站被阻止但页面没有重定向到“chatbot.html”,页面显示:

'blninlecioflbneanancablcknibdbja is blocked This page has been blocked by Chrome ERR_BLOCKED_BY_CLIENT'(随机字母是本地扩展文件夹的名称,由chrome生成)。终端说“(索引):7272 crbug / 1173575,不推荐使用非JS模块文件。(匿名)@(索引):7272”然后单击字符串末尾的数字显示

'没有找到给定 URL 的资源'

奇怪的是,当我在 background.js 控制台中打印出 url 并单击它时,重定向到 chatbot.html 有效。当我单击 word 文档中的链接时,它也可以工作(但同样,不是电子邮件中的链接!)。

我已经尝试研究这些错误,但没有发现太多。

为什么有时只能找到文件?

标签: javascriptgoogle-chromegoogle-chrome-extensionwebrequest

解决方案


“您需要将文件添加到 manifest.json 中的 web_accessible_resources。我认为这是一个错误,但它一直是这样工作的。-wOxxOm”


推荐阅读