Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google chrome 修改chrome扩展中的url位置&;停止最初的请求_Google Chrome_Google Chrome Extension - Fatal编程技术网

Google chrome 修改chrome扩展中的url位置&;停止最初的请求

Google chrome 修改chrome扩展中的url位置&;停止最初的请求,google-chrome,google-chrome-extension,Google Chrome,Google Chrome Extension,我做了一个扩展,它的目的是重定向URL。 即:www.google.com变为:www.mysite.com/?url=www.google.com 我看到了这样一个帖子: 我遇到的问题是,url都是经过处理的。该选项卡最初加载google.com,只有在完成后才会显示我的请求(www.mysite.com/?url=www.google.com)。 有没有办法阻止处理初始请求 比如: chrome.tabs.onUpdated.addListener(function(tabId,ob

我做了一个扩展,它的目的是重定向URL。 即:www.google.com变为:www.mysite.com/?url=www.google.com

我看到了这样一个帖子:

我遇到的问题是,url都是经过处理的。该选项卡最初加载google.com,只有在完成后才会显示我的请求(www.mysite.com/?url=www.google.com)。 有没有办法阻止处理初始请求

比如:

   chrome.tabs.onUpdated.addListener(function(tabId,obj,tab){
    update.stop() // ??????????? Here I'm missing...
    chrome.tabs.update(tabId,{url:....}, function callback); // My update stuff..
   });
想法


谢谢大家。

chrome.tabs.onUpdate
在每次加载选项卡时都会触发两次,一次是选项卡开始加载,另一次是在加载完成后触发。如果将更新附加到tab start loading事件,那么它应该可以相对快速地工作。您仍将看到加载原始url的时间很短,但它不会像您描述的那样等到加载完成

chrome.tabs.onUpdated.addListener(function(tabId,obj,tab){
    if(obj.status == "loading") {
        chrome.tabs.update(tabId,{url:....}, function callback); 
    }
});
我认为目前没有更有效的解决方案。

您正在寻找解决方案

您可以注册侦听器,通过动态修改或阻止请求来处理用户导航

在下面的示例中,当用户导航到
www.google.com
,甚至在页面开始加载
onBeforeNavigate
之前,您可以将用户重定向到该URL的CSS验证页面:

chrome.webNavigation.onBeforeNavigate.addListener((details) => {
    if(details.url.indexOf("www.google.com") !== -1)) {
        chrome.tabs.update(details.tabId, {
            url: "https://jigsaw.w3.org/css-validator/validator?uri=" + details.url
        });
    }
});

请记住向扩展清单中添加“webNavigation”权限以启用此功能。

是否使用内容脚本?嗯,还没有。我用的是背景页。哦,是的,当然。我不知道我是怎么了。是的,我认为这样做是不可能的,除非你也能控制omnibox,据我所知,你不能。它能用内容脚本完成吗?你现在正在做的,是的。你想做什么,不,据我所知不是。我记得有类似window.stop()的东西。尝试在内容脚本中使用它;它被尽可能早地注入页面。(不会有多大帮助,因为内容脚本通常在页面上的大部分内容加载后很好地被注入。)看起来很有希望。我害怕使用那个API,因为它可能会改变。他们这样做的可能性有多大?尽管他们说不应该,我是否应该“依赖”他们?有时,一些API不再需要,甚至变得毫无意义。例如,边栏API将在将来的版本中删除,因为您现在可以通过内容脚本制作自己的边栏。但我向你们保证,webNavigation是一个必须的工具,它只会得到一些小的改变。玩得开心,而不是重定向?是否可以阻止它?@Noitidart是的,可以使用webNavigation API阻止请求。我认为很多广告屏蔽者使用它。你可以看看哪一个是开源的,看看他们是如何做到的。谢谢@snolflake,我会看看的,应该是
函数回调(){}