Возможно ли использовать Chrome API в скрипте содержимого?

#javascript #google-chrome-extension

#javascript #google-chrome-extension

Вопрос:

В настоящее время я пытаюсь загрузить файл с помощью скрипта содержимого. Однако, похоже, что он ничего не делает. Я также пытался отправить сообщение своему фоновому скрипту, а затем загрузить его из фонового файла, однако, похоже, сообщение получено не было.

 chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
    if(message == "handle_all") {
        let is_playing = document.getElementsByClassName("playControl")[0].innerHTML == "Pause current";
        let volume = document.getElementsByClassName("volume__sliderWrapper")[0].getAttribute('aria-valuenow');

        SC.initialize({
            client_id: 'censored',
        });

        if(is_playing) {
            SC.resolve('https://soundcloud.com/moow-beatmaker/it-wasnt-me').then(function(track) {
                chrome.downloads.download({
                    url: "track.download_url   '?client_id=censored'",
                });
            });
        }
    }
});
  

Ничего не происходит. Нет загрузки, ничего. Когда я сам захожу на страницу загрузки, я получаю код ошибки 406 «Неприемлемо».

Это проблема с невозможностью использовать Chrome API в скрипте содержимого или проблема с API, с которого я загружаю файл?

Комментарии:

1. Скрипты содержимого не могут использовать chrome.downloads API. Единственным решением является отправка сообщений фоновому скрипту, поэтому — можете ли вы добавить свой код, который не сработал, и manifest.json к вопросу?

2. @wOxxOm Мне удалось отправить сообщение фоновому скрипту, однако теперь я получаю ошибку недопустимого URL при загрузке. Однако URL-адрес кажется мне полностью корректным: » api.soundcloud.com/tracks/269174566/download?client_id=censored «. Нужен ли chrome точный файл с расширением?

3. Мне нужно взглянуть на реальный код.