如何重定向Google Chrome扩展程序中的某些页面?

默丘克·霍尔(Merchuk Hul)

chrome.webRequest.onBeforeRequest后台脚本中使用它来侦听用户提出的所有请求。我的扩展名现在只是一个清单和这个bg脚本。

然后,我检查网址是否与正则表达式匹配:

chrome.webRequest.onBeforeRequest.addListener(
     checkRedirect, {urls: ["<all_urls>"]}, ["blocking"]
);

function checkRedirect(details) {   
    var location = getLocation(details.url);

    if(/some_regex/.test(details.url)) {
        var redirect_url = 'http://some_redirect.com' + location.pathname;
        chrome.tabs.update({url: redirect_url});
    }

    return {cancel: false}; 
}

function getLocation(href) {
    var l = document.createElement('a');
    l.href = href;
    return l;
};

因此,如果用户进入页面或单击指向该页面的链接,我想将其重定向。上面的代码几乎可以正常工作;问题是当页面请求例如CSS时,这些CSS最终出现在用户屏幕上。


所以我想要的是只过滤对页面/点击的请求。

罗伯·W

通过设置types将事件通知限制为顶级框架['main_frame']['main_frame', 'sub_frame']如果您还希望包括框架,则使用此属性)。

尽管先前的建议可以解决您的问题,但我建议更进一步,并摆脱它chrome.tabs.update用于redirectUrl将先前的请求替换为重定向到所需URL的地址。

如果您的URL模式匹配方法非常简单(可表示为匹配模式),则将过滤器合并到webRequest API过滤器“ urls”键中。这将减少扩展程序对浏览器性能的影响。

chrome.webRequest.onBeforeRequest.addListener(function(details) {
    var location = getLocation(details.url); // getLocation defined in question
    var redirect_url = 'http://some_redirect.com' + location.pathname;
    return { redirectUrl: redirect_url };
}, {
    types: ['main_frame', 'sub_frame'],
    urls: ['*://*/*some_pattern*']
}, ['blocking']);

注意:<all_urls>如果您不准备处理非HTTP请求,请不要使用

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Chrome扩展程序中重定向到HTML页面

Google Chrome扩展程序重定向网址

Chrome扩展程序:如何捕获重定向?

如何从Laravel中的Google Drive重定向

Google Chrome浏览器扩展程序重定向其他页面

如何重定向页面

页面重定向后如何调用Chrome扩展功能?

如何在Chrome扩展程序中重新加载某些标签

如何从 Google Script 重定向到特定页面

如何在 Google 表格中返回重定向的 URL

如何从Chrome扩展程序中打开的窗口获取背景页面?

Chrome扩展程序如何响应按钮在页面中的单击?

从网站下载chrome扩展程序,而无需重定向到Chrome Webstore页面

如何在Google Chrome扩展程序的HTML页面中添加常规Google搜索栏?

从Google Chrome扩展程序调用页面功能

如何重定向到Django中的页面

Chrome扩展程序:单击按钮后如何将html表单数据发送到php页面,该页面重定向到该php页面

如何从我的kern.log中重定向Google Chrome日志

如何通过扩展程序检测Google Chrome中页面标题的更改?

如何在我自己的扩展程序中获取刚打开的页面而不是 chrome 特殊页面

Chrome扩展程序通过POST请求重定向到本地页面

如何使用 Google Apps 脚本检查 Google 表格中的 URL 重定向

重定向页面上的Google实验

是否有Chrome扩展程序可从Google搜索结果中删除某些域/网站?

Google Chrome不活动重定向

Google Chrome不活动重定向

如何通过在react chrome扩展程序中按按钮重定向到另一个组件?

如何使用PHP在重定向页面上使用Google Analytics(分析)进行跟踪?

chromeapp.org扩展名重定向如何在Google Chrome浏览器上工作?