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

Суть проблемы: Имею два xul файла:

foxinch.xul добавляет пункт "foxinch" в меню TOOLS, по нажатию на него открывается сайт ya.ru .Пункт меню появляется и срабатывает, открывая страницу.

Выделить код

Код:

<overlay id="sum_foxinch"
	xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/x-javascript" src="chrome://foxinch/content/foxinch.js"/>
  <menupopup id="menu_ToolsPopup">
    <menuitem label="foxinch" position="1" oncommand="fiscript_hello(event, 'web')"/>
  </menupopup>
</overlay>

foxinchoptions.xul - является диалоговым окном, вызываемым из диспетчера дополнений по нажатию на кнопку "настройки". Окно появляется, отображаются его элементы (не уверен, что кнопка отображается корректно, мне казалось она должна была быть с пиктограммой - папочкой,но оной нету).

Выделить код

Код:

<dialog buttons="accept, cancel"
        id="foxinch-options-dialog"
        ondialogaccept="foxinch_saveoptions()"
        onload="foxinch_initializeoptions()"
        title="foxinch preferences 1"
        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
        
    <script type="application/x-javascript" src="chrome://foxinch/content/foxinch.js"/>
    
<groupbox>             <caption label="method of sinchronisation"/>
	<vbox>
		<checkbox id="foxinch_pasteonfoxinchdir" label="Copy bookmarks into foxinch directory" prefstring="foxinch.optpasteonfoxinchdir" defaultpref="true" />
		<textbox id="foxinch_executablepath" prefstring="foxinch.optexecutablepath" defaultpref="123"/>
                <button class="browse" id="foxinch_executablepick" oncommand="return foxinch_onPickExecutable()"/>
	</vbox>
</groupbox>  </dialog>

Однако функции, как мне показалось(почему показалось напишу ниже), не выполняются вовсе. Ни одна из четырех.

Выделить код

Код:

function fiscript_hello(event, f_string)
{
var vfoxinch_win = window._content.document; 
window._content.document.location = "http://ya.ru";
window.content.focus();
}
function foxinch_saveoptions()
{
var vfoxinch_prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("foxinch.");
vfoxinch_prefs.setBoolPref("optpasteonfoxinchdir", document.getElementById("foxinch_pasteonfoxinchdir").checked);
}
function foxinch_initializeoptions()
{
document.getElementById("foxinch_pasteonfoxinchdir").setAttribute("hidden", true); //пробовал и без этой строки и с ней
var vfoxinch_prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("foxinch.");
    document.getElementById("foxinch_pasteonfoxinchdir").checked = vfoxinch_prefs.getBoolPref("optpasteonfoxinchdir"); //да, а все обращения к vfoxinch_prefs пробовал заменять просто на константу true
}
        function foxinch_onPickExecutable()  //эту функцию скопировал напрямую из saveimgtofolder,если кто распишет мне принцип ее работы, буду благодарен
        {
            var foxinch_fp = Components.classes["@mozilla.org/filepicker;1"].createInstance(Components.interfaces.nsIFilePicker);
       foxinch_fp.init(window, getLocalizedMessage("setFolder.pickExecutableTitle"), Components.interfaces.nsIFilePicker.modeOpen);
            foxinch_fp.appendFilters(Components.interfaces.nsIFilePicker.filterAll);
       var res = foxinch_fp.show();
            if (res == Components.interfaces.nsIFilePicker.returnOK)
                document.getElementById("foxinch_executablepath").value = foxinch_fp.file.path;
            return true;
        }

Попытки разобраться с проблемой Я пытался вызвать функцию fiscript_hello по нажатию на кнопку, но так как не уверен, что при работе с этим диалоговым окном вообще можно обращаться к окну фокса, не стал делать поспешных выводов. Но все же ни один скрипт не сработал по созхранению данных. Я так же пытался по событию onload скрывать при помощи функции setatribut чекбокс, но ничего не менялось.

Просьба Помогите найти ошибку и подскажите, каким способом легче всего проверить вызываются ли функции вообще или нет. Надеюсь на вашу помощь, делаю первые шаги в дебрях xul , не хотелось бы потерять ко всему этому интерес.

Добавлено Вск 26 Авг 2007 21:52:29 :
ЗЫ уверен, ошибка на уровне слеша в путях или еще чего :) но целый день не могу найти ее :(

Добавлено Вск 26 Авг 2007 22:04:38 :
дефолпреф... что это за атрибут? на ксулплэнет его вроде как нет, но его используют в некоторых расширениях создатели. в любом случае, без него тоже ничего не работает... помогите!!! /

Sumerki
посмотрел немного примеры ваши, вроде всё верно.
пробовали вставлять например

Выделить код

Код:

alert(1);

вне функций прямо в js файл?
так можно проверить подключён ли файл js.

если в about:config параметр javascript.options.strict поставить в true, то ошибки внутри chrome будут отображаться в консоли. так можно обнаружить баги с расширении самостоятельно.

P.S.: nsIFilePicker

Спасибо за ссылочку. что касаемо ошибок в яве, вроде как проверял при помощи extention developer. Да и сча в консоль ничего не вывелось.

Спасибо за алерт, совсем забыл джейэс, даже такие элементарные вещи напоминать приходится :)

Благодаря алерту выяснил, что как миниму на два события функция вызывается - онлоад и он аццепт. Значит не работает дерево настроек у меня. Не подскажите, где можно посмотреть за содержимым этих настроек? Сегодня так же помучаю основательнее ксул планет относительно деревьев этих.

Выделить код

Код:

var vfoxinch_prefs = Components. classes ["@mozilla.org/preferences-service;1"].
						 getService (Components. interfaces. nsIPrefService).
						 getBranch ("foxinch.");

Если ветви foxinch ещё нет в about:config, здесь будет ошибка.

Выделить код

Код:

function foxinch_onPickExecutable()  //эту функцию скопировал напрямую из saveimgtofolder,если кто распишет мне принцип ее работы, буду благодарен
{
	...
	foxinch_fp. init
	(
		...
		getLocalizedMessage ("setFolder.pickExecutableTitle"),
		...
	);
	...
}

getLocalizedMessage тоже определена в saveimgtofolder ? - без её определения foxinch_onPickExecutable не будет работать.

Принцип работы foxinch_onPickExecutable полностью определяется методами nsIFilePicker, они все описаны здесь: http://www.xulplanet.com/references/xpc … icker.html

Антон, дайте я Ва сейчас расцелую :)

Если относительно первого я догадывался (не останавливался на этой версии только потому, что не совсем разобрался с сохранениями, хотя помнится начал именно с того, что проверял условием существование соответствующей ветки. Надо будет еще раз все перепроверить), то со вторым бы повозился подольше.

Всем спасибо за помощь! ИМХО, тему можно вообще удалить, ибо заголовок не имеет ничего общего с проблемой, а сама проблема связана как минимум с невнимательностью и халатностью в отношении к официальным докам горепрограммиста / хотя, наверное большинство проблем с этим и связаны :) Нет ли какого IRC канала, где сидят люди-ксулисты, у которых всегда можно спросить какой-ндь метод или объект?

Sumerki

Нет ли какого IRC канала, где сидят люди-ксулисты, у которых всегда можно спросить какой-ндь метод или объект?

в мознете есть, правда там по английски объяснять придётся ;)
ircs://irc.mozilla.org:6697/#xul
ircs://irc.mozilla.org:6697/#js
ircs://irc.mozilla.org:6697/#css
ircs://irc.mozilla.org:6697/#extdev