Расширения Opera (виджеты): динамический файл конфигурации - PullRequest
0 голосов
/ 22 февраля 2011

У меня есть расширение Opera 11, которое имеет фоновый процесс и внедренный скрипт.Они очень часто обмениваются данными с удаленным сервером (а не с веб-страницей, которую просматривает пользователь), используя межсайтовые возможности XMLHttpRequest фонового скрипта.

Я бы хотел, чтобы URL сервера был предпочтительным, чтобы он могбыть изменены пользователем без редактирования пакета.Файл config.xml был бы хорош, поскольку он принимает <preference name="serverUri" value="..." />.Тем не менее, я бы хотел, чтобы скрипт мог обновляться непосредственно с сервера (не через сайт Opera), чего можно добиться с помощью <update-description href="http://myserver.com/client/update" />.

Так что мне бы хотелось иметь href атрибут элемента update-description зависит от значения предпочтения serverUri.Я мог бы представить такой синтаксис, как этот:

<update-description href="{$serverUri}" />

Но я не смог найти никаких ссылок на этот вид функциональности.Есть ли способ решить эту проблему?

Ответы [ 2 ]

1 голос
/ 23 февраля 2011

Невозможно использовать переменные в файле config.xml, как вы написали, и я не думаю, что есть планы добавить это.

Я уверен, что вы знаете, что настройки можно установить не только с помощью элемента preference в config.xml, но и с помощью widget.setPreferenceForKey(value, key), но я не думаю, что это решит вашу проблему в этом случае.

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

var script = document.createElement('script');
script.src = 'http://www.example.com/script.js';
document.body.appendChild(script);

Затем вы можете сделать URL-адрес скрипта редактируемым пользователем и сохранить его в widget.preferences.

EDIT от hallvors: Это решение имеет серьезные недостатки, см. Мой комментарий ниже.

0 голосов
/ 13 июня 2012

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

...