Всем доброго времени суток! Вопрос возник.. Мне нужно получить переменные страницы из расширения. Документ так получаю.

Выделить код

Код:

function Load()
{
    window.addEventListener('DOMContentLoaded', AdjustPages, true);
    //
};
//
function AdjustPages(param1)
{
    var  doc = param1.target;
   alert(doc .defaultView.somevar);//алертует undefined
};

хотя фаербаг по такой фразе даёт переменные. Можно конечно получить извратным способом - создать в документе элемент, туда записать содержимое, получить его в расширении, удалить элемент, но нехотелось бы заниматься кривокодингом :)

Подскажите, можно получить переменные нормальным способом?

Выделить код

Код:

alert(doc.defaultView.wrappedJSObject.somevar);

Тем не менее, лишний раз лучше так не делать, потому как на странице может быть что-то вроде:

Выделить код

Код:

window.__defineGetter__(
	"somevar",
	function() {
		alert(0);
	}
);
Infocatcher пишет

Тем не менее, лишний раз лучше так не делать

Так в Fx 3.0+ вроде же XPCSafeJSObjectWrapper. Он должен быть безопасным.

Crazy-EyE пишет

Он должен быть безопасным.

Да, так и есть – chrome-привилегий запускаемый код не получит – не так давно проверяли (правда, код из pastebin уже потерся =/).
В любом случае вполне может случиться страничка с каким-нибудь

Выделить код

Код:

while(true)
  alert(0);

Не смертельно, но неприятно. Впрочем, это важно только для достаточно популярных расширений. =)

Спасибо большое за информацию :D