Firefox XUL从内容上下文调用函数

时间:2012-02-20 18:08:03

标签: javascript firefox firefox-addon overlay xul

我知道这个问题早先被问过,但是OP没有得到任何合适的答案。 所以问题是:

  

如何访问页面上下文以在FF覆盖中调用某些js函数(在我的情况下为工具栏)。

我有<toolbarbutton>元素与onclick="nextTrack()"。在包含的JS文件中声明nextTrack。按下工具栏按钮时会执行功能,但是我无法执行我确定存在于页面上的功能。

我无法修改页面,因为它是一个外部网站,但我真的想进行扩展。

当然我可以(而且我)使用类似mainDocument.getElementById("player_play").click()的内容,但页面已经有audioPlayer对象具有我需要的所有功能:playpausenextprev等。

为了更加清洁,我进行了扩展,以控制vkontakte社交网络(exUSSR国家知名的社交网络)的音频播放器。所以你可以在这里查看示例页面,也许它可以是有用的:http://vk.com/wall6843477_2327。 当你开始倾听时,必须出现带有控件的栏,你可以找到很多东西,比如audioPlayer.nextTrack(); audioPlayer.prevTrack();等。

1 个答案:

答案 0 :(得分:1)

您不是直接访问内容,而是通过XPCNativeWrapper。这意味着内容页面定义的所有JavaScript属性都是不可见的(这是一个安全功能)。在您的情况下,最简单的安全解决方案是使用javascript:协议:

mainDocument.defaultView.location.href = "javascript:void audioPlayer.play()";

这样你就无法获得结果,但似乎你不需要。