Вопрос: Работа с расширениями Firefox
Здравствуйте!Как во внутренних js-файлах расширений Firefox (находятся в папках C: \ Documents and Settings \ ... \ Application Data \ Mozilla \ Firefox \ Profiles \ .... default \ extensions \ ...... \ content \) достать объект window (основное открытое окно, либо активная вкладка) ?...
В частности, интересует как это сделать, если используетя XPCNativeWrapper. Например в GreaseMonkey:
C: \ Documents and Settings \ ... \ Application Data \ Mozilla \ Firefox \ Profiles \ .... default \ extensions \ (e4a8a97b-f2ed-450b-b12d-ee082ba24781) \ content \ scriptdownloader.js
Любые попытки всегда выдают объекты ChromeWindow, либо XUL, либо иные... что с ними делать, с чем едят?
Буду рад любым ответам и просто соображениям на тему.
Попробовал
var appcontent = document.getElementById("appcontent");
в scriptdownloader.js, работает, но выдает объект типа [object XULElement].
А мне нужен именно объект [object Window] - то есть само окно.
(Либо объект [xpconnect wrapped nsISupports], чтобы потом из него достать [object Window] путем .wrappedJSObject.
Может есть способы достать из [object XULElement], [xpconnect wrapped gmIBrowserWindow], ChromeWindow, но я их к сожалению не знаю.
Если быть точнее, мне надо запустить функцию, которая требует два аргумента:
domContentLoaded: function(wrappedContentWin, chromeWin) {
var unsafeWin = wrappedContentWin.wrappedJSObject;
var unsafeLoc = new XPCNativeWrapper(unsafeWin, "location").location;
var href = new XPCNativeWrapper(unsafeLoc, "href").href;
var scripts = this.initScripts(href);
if (scripts.length > 0) {
this.injectScripts(scripts, href, unsafeWin, chromeWin);
}
}
Эта функция прописана в \extensions\{e4a8a97b-f2ed-450b-b12d-ee082ba24781}\components\greasemonkey.js и выполняется, как и положено, по наступлению события. Я же хочу запустить её произвольно, но для этого нужны эти самые аргументы...
P.S. дело нужно, чтобы переделать систему обновления скриптов в GreaseMonkey (которой на самом деле нет)