我有一个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}" />
但是我找不到任何对这种功能的引用。有什么方法可以解决这个问题吗?
答案 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)
据我所知,这目前无法实现。这似乎是一个不寻常的用例,实施起来可能有风险,所以听到更多关于你为什么要这样做的事情会很有趣。