繁体   English   中英

尝试使用Chrome扩展程序将Chrome重定向到新的URL

[英]Trying to redirect Chrome to new URL using Chrome extension

我刚开始写Chrome扩展程序。 第一个项目:对于某些网站,如果您单击扩展名,则该扩展名会将Chrome重定向到当前的domainName / archive。

我正在使用chrome.tabs.update(); 重定向。
如果我尝试重定向到Yahoo.com类的硬编码URL,它将正常工作。

但是,如果我尝试重定向,使我真正想要的东西,例如developer.google.com/archive (我知道不存在),Chrome尝试获取的结果URL是:

chrome-extension://injepfpghgbmjnecbgiokedggknlmige/developer.chrome.com/archive

Chrome是否出于某种原因在扩展名的ID之前添加了URL?

在我的background.js中,我有以下内容:

 chrome.runtime.onMessage.addListener(function(request, sender) {
chrome.tabs.update( {url: request.redirect});

我从本文获得了上面的代码。

有人在这里有相同的问题(但未回答)

完整的options.js是:

function createButton () {
    chrome.tabs.getSelected(null, function(tab) {
        var url = new URL(tab.url);
        var domain = url.hostname;
        archiveURL = domain + "/archive";

        let page = document.getElementById('buttonDiv');
        let button = document.createElement('button');

        button.addEventListener('click', function() {
            chrome.runtime.sendMessage({redirect: archiveURL}); // works if I send "Yahoo.com"
        });
        button.textContent = "> " + archiveURL; // So I know I am sending the right URL
        page.appendChild(button);

    })
}


createButton(); 

摘要:如果我设置:

 archiveURL = "http://sundxwn.tumblr.com/archive";

系统可以正确访问http://sundxwn.tumblr.com/archive

但是...如果我设置

archiveURL = domain + "/archive";

并确认按钮文本显示为: http://sundxwn.tumblr.com/archive chrome-extension://injepfpghgbmjnecbgiokedggknlmige/sundxwn.tumblr.com/archive尝试转到: chrome-extension://injepfpghgbmjnecbgiokedggknlmige/sundxwn.tumblr.com/archive

任何帮助将不胜感激。

url.hostname就是那个主机名。 对于原始URL https://example.com/some/path ,它将为example.com

然后,您构造的URL是example.com/archive 它不是以协议(例如http:// )或斜杠开头的,因此它被解释为当前页面URL的相对 URL。

您可以从某些扩展页面(例如page.html或自动生成的后台页面)调用它。 其URL例如:

chrome-extension://injepfpghgbmjnecbgiokedggknlmige/page.html

因此,要从相对URL构造绝对URL,Chrome会在最后一个斜杠处截断该路径,并添加您的相对部分。

需要指定协议,以便Chrome理解它是与当前文档无关的URL。 url.origin做到了,那就是https://example.com ,然后对其进行正确解释。

暂无
暂无

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

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