Javascript 如何触发观察者通知,并使侦听器位于另一个XUL窗口上

Javascript 如何触发观察者通知,并使侦听器位于另一个XUL窗口上,javascript,firefox,xul,listener,observer-pattern,Javascript,Firefox,Xul,Listener,Observer Pattern,我是XUL编程的新手,学到了很多东西,但我很难理解如何触发观察者通知&让另一个XUL窗口上的侦听器从观察者函数获取字符串值(观察者将字符串参数传递给另一个XUL窗口) 这是我的树xil文件 <?xml version="1.0"?> <?xml-stylesheet href="chrome://global/skin/" type="text/css"?> <window title="ContactMatrix;" xmlns="http://w

我是XUL编程的新手,学到了很多东西,但我很难理解如何触发观察者通知&让另一个XUL窗口上的侦听器从观察者函数获取字符串值(观察者将字符串参数传递给另一个XUL窗口)

这是我的树xil文件

<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<window title="ContactMatrix;"
        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
 <script type="application/x-javascript" src="fire.js" />

    <hbox>
<textbox type="search" oncommand="SearchKeyword(this)"/>
    </hbox>

<tree editable="false" id="my-tree" flex="1"   seltype="cell" onclick="onTreeClicked(event)"
datasources="file://C:/mercredi.xml" ref="*" querytype="xml" enableColumnDrag="true" hidecolumnpicker="false"  >
</tree>
</window>
这是我的文本框XUL文件。我想将xul树单元值激发到该文件中的文本框中

<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<window title="Subjects import"
    xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" >

    <script type="application/x-javascript" src="fire.js" />

<groupbox>
<caption>Subject(s)</caption>
    <hbox>
    <label  value="Subjects"/>
     <textbox id='ali' value=""/>
     <button label="Contacts" onclick="DisplayContacts();"/>
    </hbox>
</groupbox>
</window>

科目
向另一个XUL窗口触发树单元值时出现问题。从我的文本框XUL文件中,我可以打开我的树XUL文件,当我单击树单元时,我可以得到树单元的值作为警告消息。之后,我的脚本就不起作用了

基本上在这里,当我单击树单元时,所选的树单元值应该激发到另一个XUl窗口中的文本框中

有人请帮我解决这个问题。在这里,我将scrip文件和xul文件分开。 从这个网站我已经采取了所有可能的脚本。 非常感谢。
注意:我已经在同一篇文章中更新了我的问题

在您发布的代码中,您在添加观察者后定义了testObserver,这意味着观察者不会调用您的观察函数,而是调用未定义函数的观察函数。。。 您应该在添加观察者之前定义它,或者使用testObserver.observe=function(){}定义观察函数

但是为了更简单地使用observer,我将使用以下文件:

这是nsIObserver的包装。
您只需导入文件,在两个文件中都有一个模块,用于发送和观察通知:

 Components.utils.import('resource://modules/Observers.js');
您可以使用以下方法观察通知:

Observers.add('myTopic', myCallback, myCallbackSubject);
然后,每次执行以下行时,调用myCallback,并将parameterForMyCallback作为参数:

Observers.notify('myTopic',parameterForMyCallback);

在调用addObserver函数之前,您是否尝试过定义testObserver?我不知道它会在以后工作,但这可能是第一个bug…在我分离了xul和脚本文件之后,现在我可以打开我的xul树文件了。谢谢。我找到了一个更简单的方法。这有助于我理解XUL中“观察者”函数的概念。
Observers.notify('myTopic',parameterForMyCallback);