Как передать информацию в контентный скрипт в аддоне Firefox? - PullRequest
0 голосов
/ 07 декабря 2018

Я хочу создать временную надстройку Firefox с помощью всплывающего окна в панели навигации, чтобы изменить скорость воспроизведения видео в браузере.(на основе этого урока https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Your_second_WebExtension)

Я создал всплывающую иконку и скрипт для выбора значения скорости (index.html, script.js). А затем еще один файл app.js для измененияскорость видео в соответствии с выбранным значением:

manifest.json

{

  "manifest_version": 2,
  "name": "Netflix_speed",
  "version": "1.0",

  "description": "Adds an extension button to change the speed of a video played on Netflix.",
  "icons": {
    "64": "icons/icon-64.png"
  },
    "permissions": [
    "activeTab"
  ],

  "content_scripts": [{
    "matches": [ "*://*.netflix.com/*" ],
    "js":  [ "content_scripts/app.js" ]
  }],

  "browser_action": {
    "browser_style": true,
    "default_icon": "icons/icon-64.png",
    "default_title": "Netflix_speed",
    "default_popup": "popup/index.html"
  }
}

index.html

<!DOCTYPE html>

<html>
  <head>
    <meta charset="utf-8">
    <link rel="stylesheet" href="style.css"/>
  </head>
<body>
  <div id="popup-content">
    <div class="number" id="0.75">0.75</div>
    <div class="number" id="1">1</div>
    <div class="number" id="1.25">1.25</div>
  </div>
  <script src="script.js" type="module"></script>
</body>

</html>

script.js

const listenForClicks = () => {
    document.addEventListener("click", (e) => {
        // console.log('log: ', e.target.textContent);
        // console.log(e);
        switch (e.target.textContent) {
            case '0.75':
                console.log(0.75);
                return 0.75;
                break;
            case '1':
                console.log(1);
                return 1;
                break;
            case '1.25':
                console.log(1.25);
                return 1.25;
                break;
            default:
                console.log("default");
                return 1;
        }
    }
)};

listenForClicks();

export default listenForClicks

app.js

import listenForClicks from popup/script.js

let speed = listenForClicks();

console.log(speed);
console.log('app.js')
const vidSpeed = () => {
    document.querySelectorAll('video').forEach(v=>v.playbackRate=speed);
}

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

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