Использование настроек в XUL

Я пытаюсь понять, как использовать настройки (те, к которым вы можете получить доступ, перейдя в about:config) в файле XUL. У меня есть несколько разработчиков, работающих над этим, и у всех нас настроены разные «локальные» хосты. Поэтому я хотел бы упростить задачу для всех, сделав часть "example.local" belos исходной из настройки предпочтения (строки). Таким образом, я могу использовать example.com по умолчанию, и каждый разработчик просто должен отредактировать его в соответствии с тем, что установлено в их файле hosts.

<?xml version="1.0" encoding="UTF-8"?>
<overlay id="my-overlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
    <script src="http://example.local/some/script.js"/>
</overlay>

Я знаю, как установить значение по умолчанию и как получить к нему доступ из javascript, но этот конкретный xul выше загружает javascript, и мне нужно, чтобы он загружался с сервера.

Большое спасибо за Вашу помощь!

Луис


person luisgo    schedule 21.08.2010    source источник


Ответы (2)


Вам нужно создать файл prefs.js со значениями по умолчанию, которые вы хотите.

См. документацию здесь.

Затем вы можете сослаться на предпочтение, используя nsiPrefService, например, если это логическое значение, сохраненное как моя ветка.mybooleanpreference:

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

var value = prefs.getBoolPref("mybooleanpreference"); 

См. фрагмент кода настройки здесь или

person pc1oad1etter    schedule 21.08.2010
comment
Спасибо! Это полезно для установки предпочтения по умолчанию, но как мне использовать это значение в XUL? Эффект позволит мне сделать что-то вроде: ‹?xml version=1.0 encoding=UTF-8?› ‹overlay id=my-overlay xmlns=mozilla.org/keymaster/gatekeeper/there.is.only.xul› ‹script src=http://[[value-from- предпочтение]]/some/script.js/› ‹/overlay› Еще раз спасибо! - person luisgo; 22.08.2010
comment
То есть... где [[value-from-preference]] — это значение, установленное в настройках. - person luisgo; 22.08.2010
comment
Я добавил дополнительную документацию и пример получения значения предпочтения в Javascript. - person pc1oad1etter; 23.08.2010
comment
Это прекрасно работает. Я могу прочитать настройки, установленные по умолчанию. Но есть идеи, как использовать это предпочтение в самом XUL? Я хочу, чтобы разработчики могли изменить настройки, чтобы через него можно было изменить example.com выше. Спасибо. - person luisgo; 26.08.2010
comment
Вам нужно сослаться на него в JavaScript. Я не думаю, что вы могли бы получить доступ к этому напрямую из XUL без Javascript. Я думаю, вы могли бы установить src этого элемента в событии onload, что может выполнить то, что вы хотите. - person pc1oad1etter; 26.08.2010

Похоже, вы хотите сделать что-то вроде этого:

В вашем файле XUL добавьте:

<body onload="return myFunc();">

В вашем javascript добавьте функцию:

function myFunc() {
var prefs = Components.classes["@mozilla.org/preferences-service;1"]
                    .getService(Components.interfaces.nsIPrefService).getBranch("mybranch.");
   var src = "http://"+prefs.getStringPref("mystringpreference")+"/some/script.js";
   var script = document.getElementsByTagName("script")[0];

   script.setAttribute("src", src);
}

Убедитесь, что вы добавили скрипт для файла javascript, например:

<script src="chrome://myextension/content/myjavascript.js

Надеюсь это поможет!

person Purge    schedule 15.09.2010