Да, доступ к переменной JS в содержимом есть и всегда был возможен. Делать это наивным способом было небезопасно (в том смысле, что вредоносная веб-страница могла получить права chrome) в старых версиях Firefox.
1) Если вы управляете веб-страницей и хотите передать информацию в расширение, вам действительно следует использовать технику events . Это работало и было / безопасно во всех версиях Firefox.
2) Если вы хотите прочитать значение из документа содержимого, вы можете просто обойти XPCNativeWrapper:
var win = window.top.getBrowser().selectedBrowser.contentWindow;
// By the way, this could just be
// var win = content;
// or
// var win = gBrowser.contentWindow;
alert(win.variableForExtension); // undefined
win.wrappedJSObject.variableForExtension // voila!
Это было небезопасно до Firefox 3. В Firefox 3 и более поздних версиях его можно использовать, вы получаете другой тип оболочки ( XPCSafeJSObjectWrapper ), который выглядит так же, как объект со страницы содержимого в ваш код, но гарантирует, что контентная страница не сможет сделать что-либо вредоносное.
3) Если вам нужно вызвать функцию на веб-странице с контентом или запустить собственный код в контексте страницы, это сложнее. Это спрашивалось и отвечалось в другом месте много раз, но, к сожалению, никогда полностью не документировалось. Поскольку это не имеет отношения к вашему вопросу, я не буду вдаваться в подробности.