Полезная информация

Список ответов на каверзные вопросы можно получить в FAQ-разделе форума.
  • Форумы
  •  » Разработка
  •  » два XUL, один JS, скрипты вызываются только из одного(вопрос новичка)

№126-08-2007 21:42:11

Sumerki
Участник
 
Группа: Members
Зарегистрирован: 21-06-2006
Сообщений: 17
UA: Firefox 2.0

два XUL, один JS, скрипты вызываются только из одного(вопрос новичка)

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

Суть проблемы: Имею два 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 (26-08-2007 22:33:57)


silentium est aurum / in vino veritas

Отсутствует

 

№227-08-2007 08:54:34

Shutnik
Участник
 
Группа: Extensions
Зарегистрирован: 12-11-2005
Сообщений: 3785

Re: два XUL, один JS, скрипты вызываются только из одного(вопрос новичка)

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

Выделить код

Код:

alert(1);

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

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

P.S.: nsIFilePicker

Отсутствует

 

№327-08-2007 09:51:16

Sumerki
Участник
 
Группа: Members
Зарегистрирован: 21-06-2006
Сообщений: 17
UA: Firefox 2.0

Re: два XUL, один JS, скрипты вызываются только из одного(вопрос новичка)

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

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

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

Отредактировано Sumerki (27-08-2007 10:00:10)


silentium est aurum / in vino veritas

Отсутствует

 

№427-08-2007 16:32:59

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 2.0
Веб-сайт

Re: два XUL, один JS, скрипты вызываются только из одного(вопрос новичка)

Выделить код

Код:

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


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№527-08-2007 17:00:25

Sumerki
Участник
 
Группа: Members
Зарегистрирован: 21-06-2006
Сообщений: 17
UA: IE 6.0

Re: два XUL, один JS, скрипты вызываются только из одного(вопрос новичка)

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

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

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


silentium est aurum / in vino veritas

Отсутствует

 

№627-08-2007 17:07:02

Shutnik
Участник
 
Группа: Extensions
Зарегистрирован: 12-11-2005
Сообщений: 3785

Re: два XUL, один JS, скрипты вызываются только из одного(вопрос новичка)

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

Отсутствует

 
  • Форумы
  •  » Разработка
  •  » два XUL, один JS, скрипты вызываются только из одного(вопрос новичка)

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]