Расширение Chrome создать HTML-страницу в корне - PullRequest
0 голосов
/ 26 октября 2019

В настоящее время мое расширение открывает веб-страницу по адресу

chrome-extension: //bpmcncockdffdifceihffkimpfbobjhn/dist/webpage.html

Как мне сделать так, чтобыwebpage.html опущен, и что следующий URL:

chrome-extension: // bpmcncockdffdifceihffkimpfbobjhn

Немедленно указывает на веб-страницу?

1 Ответ

0 голосов
/ 26 октября 2019

Страницы расширений Chrome обрабатываются как прямые URL-адреса файлов, а не как страницы сервера, поэтому для таких каталогов не существует обработчика по умолчанию, например index.html.

Постоянный фоновый скрипт

Если ваш фоновый скрипт не имеет "persistent": false в manifest.json, вы можете использовать webRequest API для перенаправления такого поддельного URL-адреса в реальный:

manifest.json:

"permissions": ["webRequest"],
"background": {
  "persistent": true,
  "scripts": ["background.js"]
}

background.js:

chrome.webRequest.onBeforeRequest.addListener(e => {
  return {redirectUrl: chrome.runtime.getURL('/dist/webpage.html')};
}, {
  urls: [chrome.runtime.getURL('/')],
  types: ['main_frame'],
}, ['blocking']);

Фоновый скрипт страницы события

Если ваш фоновый скрипт имеет "persistent": false в manifest.json, вы можете использовать webNavigation API для перенаправления страницы с ошибкой на реальную страницу. Единственная неприятность заключается в том, что в истории вкладки будет находиться фиктивный элемент, и кнопка возврата в историю будет активна (но, конечно, она не будет работать, поскольку она будет перенаправлена ​​снова).

манифест. json:

"permissions": ["webNavigation"],
"background": {
  "persistent": false,
  "scripts": ["background.js"]
}

background.js:

chrome.webNavigation.onErrorOccurred.addListener(({tabId}) => {
  chrome.tabs.update(tabId, {url: '/dist/webpage.html'});
}, {
  url: [{
    urlEquals: chrome.runtime.getURL('/'),
  }],
});

Существует также DeclarativeWebRequest , но только в Chrome beta / dev / Canary. И просто для удовольствия, можно использовать API webRequest с непостоянными страницами событий, но это хакерство (вам придется предотвратить выгрузку страницы событий, открыв соединение сообщения из iframe внутри фоновой страницы), и оно побеждает назначение страниц событий. поэтому я не буду показывать это здесь.

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