Я только начинаю писать расширения для Chrome.
y первый проект: для определенных сайтов, если вы щелкнете по расширению, расширение перенаправит Chrome на текущее имя домена / архив.
Я использую chrome.tabs.update();
для перенаправления.
Если я попытаюсь перенаправить на жестко заданный URL-адрес, такой как Yahoo.com
, он будет работать правильно.
Однако, если я попытаюсь перенаправить так, что я действительно хочу, например, developer.google.com/archive
(который, как я знаю, не существует), полученный URL-адрес, который Chrome пытается получить, будет:
chrome-extension://injepfpghgbmjnecbgiokedggknlmige/developer.chrome.com/archive
По какой-то причине Chrome добавляет идентификатор расширения к 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 пытается перейти к: chrome-extension://injepfpghgbmjnecbgiokedggknlmige/sundxwn.tumblr.com/archive
Любая помощь будет принята с благодарностью.