Opera扩展(小部件):动态配置文件

时间:2011-02-22 18:35:45

标签: opera opera-extension

我有一个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 个答案:

答案 0 :(得分:1)

在编写时,不可能在config.xml文件中使用变量,我认为没有计划添加变量。

我确定您知道不仅可以使用config.xml中的preference元素设置首选项,还可以使用widget.setPreferenceForKey(value, key)设置首选项,但我不认为这样可以解决您的问题

我能想到的唯一解决方法是,如果你在服务器上的外部脚本和扩展的本地文件(后台脚本或注入脚本)中拥有所有逻辑,那么只需要一些非常简单的行引用你的外部脚本。类似的东西:

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

然后,您可以让用户编辑脚本的网址,并将其存储在widget.preferences中。

由主持人编辑:此解决方案存在严重缺陷,请参阅下面的评论。

答案 1 :(得分:0)

据我所知,这目前无法实现。这似乎是一个不寻常的用例,实施起来可能有风险,所以听到更多关于你为什么要这样做的事情会很有趣。