![](/img/trans.png)
[英]Redirect to new URL using onBeforeRequest and chrome.tabs.query (Chrome Extension)
[英]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.