0

我有一个 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}" />

但我找不到对这种功能的任何引用。有没有办法解决这个问题?

4

2 回答 2

1

正如您所写的那样,无法在 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.

由 hallvors 编辑:此解决方案有严重的缺点,请参阅下面的评论。

于 2011-02-23T05:13:48.930 回答
0

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

于 2012-06-12T20:05:02.950 回答