Доступ к переменным contentScript в контексте аддона и наоборот? - PullRequest
1 голос
/ 05 февраля 2012

Возможно, это дубликат "переменной, не распознанной внутри содержимого" в том же разделе. Часть ответа на мой вопрос была там решена из ответа на этот вопрос. Да, я понимаю, что

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

Но значит ли это, что мы никогда не сможем получить доступ к переменной в контексте скрипта контента в контексте скрипта аддона? Если каким-либо образом мы сможем получить к ним доступ, пожалуйста, дайте мне знать. Мое требование требует, чтобы объекты отправлялись в качестве параметров функциям в другом скрипте (data / utilities.js) и, возможно, получали возвращаемый объект. Не было никаких трудностей в выполнении первого, но я застрял со вторым, потому что вышеупомянутая проблема контекста. Я могу вернуть значение из контекста скрипта контента, но не могу получить к нему доступ в контексте аддона. Может кто-нибудь помочь мне с небольшим примером этого?

PS Я тоже мог бы обсудить это там, но читал, что не должен, так как это не дискуссионный форум.

1 Ответ

1 голос
/ 06 февраля 2012

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

self.port.emit('send-some-var', some_var)

Затем вы получите значение переменной в скрипте надстройки.прослушивая одно и то же событие:

worker.port.on('send-some-var', function(data) { console.log(data) })

Основное ограничение, однако, заключается в том, что передаваемые данные должны быть JSON-сериализуемыми, поэтому вы не можете иметь сложный объект с методамии т. д. Только данные.

...