Использование настроек в XUL - PullRequest
0 голосов
/ 21 августа 2010

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

<?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, и он мне нужен для загрузки с сервера.

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

Луис

Ответы [ 2 ]

1 голос
/ 21 августа 2010

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

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

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

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

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

См. Фрагмент кода предпочтения здесь или

0 голосов
/ 15 сентября 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);
}

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

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

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

...