BlockingResponse в расширении Firefox

Я пытаюсь перенаправить пользователя в расширение Firefox следующим образом:

browser.webRequest.onBeforeRequest.addListener(
  ({ url }) => {
    const [fullMatch, type, identifier] =
      url.match(
        /open\.spotify\.com/(track|album|artist|playlist|concert|episode|show|user)/([^\&\#/\?]+)/i
      ) || [];

    return { redirectUrl: `spotify:${type}:${identifier}` };
  },
  {
    urls: ["*://open.spotify.com/track/*", "*://open.spotify.com/album/*",
  "*://open.spotify.com/artist/*", "*://open.spotify.com/playlist/*",
  "*://open.spotify.com/concert/*", "*://open.spotify.com/episode/*",
  "*://open.spotify.com/show/*", "*://open.spotify.com/user/*"],
    types: ["xmlhttprequest"],
  },
  ["blocking"]
);

Я добавил разрешения webRequest и webRequestBlocking в манифест. В отладчике я вижу, что достиг оператора return с правильно установленным redirectUrl, но веб-страница не перенаправляется. Я предполагаю, что это должно перенаправлять на основе документации webRequest , однако временное расширение, похоже, не перенаправляет. Любые идеи о том, как заставить расширение перенаправлять? Например, изменение URL-адреса на https://www.google.com тоже не работает, поэтому, похоже, проблема не в URL-адресе.

redirectUrl должен быть правильным URL-адресом, а spotify:${type}:${identifier} — нет.
erosman 10.12.2020 20:02

изменение URL-адреса на google.com тоже не работает, я обновил вопрос, чтобы отразить это

relisher 11.12.2020 20:47
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
183
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

После некоторого тестирования я определил, что проблема связана с массивом типов. xmlhttprequest не фиксирует определенные запросы в Firefox, но делает это в Chrome. Чтобы по-прежнему иметь возможность перенаправлять, типы должны быть следующими:

  types: [
  "main_frame",
  "xmlhttprequest"]

Другие вопросы по теме