Манипуляции с URL от Google Chrome Extension - JavaScript - PullRequest
0 голосов
/ 26 января 2020

Для моего расширения Google Chrome я написал следующий код.

Цель - щелкнуть по кнопке префикс '/crx/de/index.jsp', добавленный в конце текущий URL открыт. Это работает в некоторой степени, в том смысле, что добавляет префикс, однако также добавляется некоторый нежелательный дополнительный префикс. (Смотрите скриншот).

В этом примере у меня открылось: Google.com. Вы можете видеть добавленный префикс и текст без текста, выделенный синим цветом.

См. Здесь вопрос - ИЗОБРАЖЕНИЕ

document.getElementById("crxde").addEventListener("click", handler_seven);  

function handler_seven() {
chrome.tabs.query({
currentWindow: true,
active: true
}, function(tab) {
var url = tab[0].url
var customParam = encodeURI('/crx/de/index.jsp');
var pathComponents = url.split('/');
var domain = pathComponents[2];
var newUrl = domain + customParam;

chrome.tabs.update(undefined, {
  url: newUrl
 });
});
};

1 Ответ

0 голосов
/ 26 января 2020

Ваш URL не имеет протокола: // поэтому он относится к текущей странице, содержащей код, который явно находится в фоновом скрипте расширения (он запускается на скрытой фоновой странице) или во всплывающем скрипте browser_action (запускается в всплывающая страница). Такие страницы расширения имеют URL-адрес типа chrome-extension://id/, поэтому относительный URL-адрес, указанный в chrome .tabs.update, рассматривается как путь к ресурсу внутри расширения.

Использование API URL и современный синтаксис:

chrome.tabs.query({
  currentWindow: true,
  active: true,
}, ([tab]) => {
  const url = new URL(tab.url);
  chrome.tabs.update({
    url: url.origin + '/crx/de/index.jsp',
  });
});

Кстати, нет необходимости кодировать раздел пути.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...