首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在XUL组件之间发送数据

在XUL组件之间发送数据
EN

Stack Overflow用户
提问于 2010-10-31 15:17:53
回答 2查看 769关注 0票数 3

我有一个由浏览器覆盖( ff-overlay.xul)组成的扩展,它通过以下代码(来自mozilla扩展生成器)启动侧边栏(ff-sidebar.xul):(在ff-overlay.xul中)

代码语言:javascript
复制
<menupopup id="viewSidebarMenu">
    <menuitem key="key_openSidebar_testinstallPackage" observes="viewSidebar_testinstallPackage" />
</menupopup>

<keyset id="mainKeyset">
    <key id="key_openSidebar_testinstallPackage" command="viewSidebar_testinstallPackage" />
</keyset>

<broadcasterset id="mainBroadcasterSet">
    <broadcaster id="viewSidebar_testinstallPackage"
        label="&testinstallPackageSidebar.label;"
        autoCheck="false"
        type="checkbox"
        group="sidebar"
        sidebarurl="chrome://testinstallPackage/content/ff-sidebar.xul"
        sidebartitle="&testinstallPackageSidebar.label;"
        oncommand="toggleSidebar('viewSidebar_testinstallPackage');" />
</broadcasterset>

主覆盖在overlay.js中包含js代码:(在ff-overlay.xul中)

代码语言:javascript
复制
<script src="overlay.js"/>

侧边栏xul在ff-sidebar.js中有js代码:(在ff-sidebar.xul中)

代码语言:javascript
复制
<script src="ff-sidebar.js"/>

我需要从overlay.js向ff-sidebar.js发送一些数据(一个字符串就足够了

我尝试过this,但它不起作用(我不知道它是否能起作用,它应该在主覆盖和当前页面之间)。

请为我提供一些这样做的手段。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-10-31 19:35:43

票数 2
EN

Stack Overflow用户

发布于 2010-10-31 19:28:03

在您的情况下,使用nsIWindowMediator是不合适的。如果您需要将一些数据从overlay.js传递给ff-sidebar.js,请使用如下window.QueryInterface:

OVERLAY.JS

代码语言:javascript
复制
var shell = {
message : function(){
       var msg = "Hello";
       return msg;
}
}

FF-SIDEBAR.JS

代码语言:javascript
复制
// put this in the function that is executed when the sidebar loads preferably 
var mainWindow = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
               .getInterface(Components.interfaces.nsIWebNavigation)
               .QueryInterface(Components.interfaces.nsIDocShellTreeItem)
               .rootTreeItem
               .QueryInterface(Components.interfaces.nsIInterfaceRequestor)
               .getInterface(Components.interfaces.nsIDOMWindow);
alert(mainWindow.shell.message); //this will alert Hello

正如您可以注意到的,overlay对象在另一个作用域中可用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4062202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档