繁体   English   中英

如何在 Manifest V3 中访问特定页面时使 Chrome 扩展程序重定向

[英]How to make a Chrome Extension to redirect when specific pages are accessed in Manifest V3

我正在尝试制作一个 Chrome 扩展程序,该扩展程序在加载指定页面时重定向到预定义页面。 我为此使用了 webRequest,但是现在我必须迁移到 Manifest V3,webRequest 不能再使用了。 谁能帮我重写脚本以使其与 Manifest V3 一起使用?

这是我用来重定向页面的脚本:

var host = "http://example.com";
chrome.webRequest.onBeforeRequest.addListener(
    function(details) {
         return {redirectUrl: host + details.url.match(/^https?:\/\/[^\/]+([\S\s]*)/)[1]};
    },
    {
        urls: [
            "*://foo.com/demo*",
            "*://www.foo.com/test/*"
        ],
        types: ["main_frame", "sub_frame", "stylesheet", "script", "image", "object", "xmlhttprequest", "other"]
    },
    ["blocking"]
);

我不建议在这个任务中使用declarativeNetRequest ,它的功能非常有限并且界面很尴尬。

听起来您想在页面加载之前重定向用户。 如果是这种情况,您需要使用chrome.debugger API 连接到请求/响应生命周期。 在这里描述了如何做到这一点 - 他的应用程序似乎很容易适应你自己的。 这是在 MV3 中获得与 MV2 中相同的口径请求操作能力的唯一方法。

替代方法:-使用chrome.webNavigation API。 这只需要为以下一项或多项设置事件侦听器/处理程序:

onBeforeNavigate -> onCommitted -> [onDOMContentLoaded] -> onCompleted

在这里,您可以找到许多使用此 API 的其他项目的示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM