Как передать переменную из сценария содержимого в сценарий страницы в WebExtensions? - PullRequest
0 голосов
/ 01 июля 2019

Мне нужно передать мою переменную, определенную в моем скрипте содержимого, в скрипт, который я вставил на веб-страницу. Например, мне нужно использовать изображение, определенное в скрипте содержимого, например:

var myImage = browser.extension.getURL("myImage.jpg");

Затем я вставляю какой-то скрипт из скрипта контента в загруженную страницу как:

var s = document.createElement('script');
s.src = browser.extension.getURL("myscript.js");
document.body.appendChild(s);

Как я могу получить доступ к переменной "myImage" в скрипте "myscript.js"?

1 Ответ

0 голосов
/ 03 июля 2019

вы можете использовать либо CustomEvent, либо window.postMessage и в myscript.js прослушайте событие или сообщение.

Пример для window.postmessage

window.postMessage({type: 'image-var', params: myImage }, "*");

в myscript.js

 window.addEventListener('message', function (e) {
        if (e.data.type === 'image-var') {
            console.log(e.data.params);
        }
    });

Пример для CustomEvent:

document.dispatchEvent(new CustomEvent('yourCustomEvent', { detail: data }));

в myscript.js

document.addEventListener('yourCustomEvent', function (e) {
  var data = e.detail;
  console.log('received', data);
});
...