Как мога да предам променлива от скрипта за съдържание към скрипта на страницата в WebExtensions?

Трябва да предам моята променлива, дефинирана в моя скрипт за съдържание, към скрипта, който инжектирам в уеб страницата. Например трябва да използвам изображение, дефинирано в скрипта за съдържание по следния начин:

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"?


person Alexander Rysev    schedule 01.07.2019    source източник
comment
Можете да използвате съобщения CustomEvent (пример).   -  person wOxxOm    schedule 01.07.2019


Отговори (1)


можете да използвате 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);
});
person Hemant    schedule 03.07.2019