扩展/插件中的 2 个 XUL 窗口之间的交互



好的,我有 2 个 xul 窗口,

window_2
<label id="#label_id" value="button has been clicked!">
window_1
[button]---> clicked--> $("#label_id).attr("value","clicked again!");

我想在 xul 中按下按钮时更改window_2 window_1的样式(标签文本),我正在使用 jquery,但这似乎不起作用,我该如何解决这个问题?

你需要的是

获取另一个窗口的窗口对象。我可以想到一些快速的方法:

  1. 创建一个模块并使用它来共享每个窗口的窗口对象:

    MyWindowModule.jsm

    const EXPORTED_SYMBOLS = ["MyWindowModule"];
    var MyWindowModule = {
        window1: null,
        window2: null
    }
    

    窗口1.js

    Components.utils.import("resource://myextension/modules/MyWindowModule.jsm");
    MyWindowModule.window1 = window;
    

    窗口2.js

    Components.utils.import("resource://myextension/modules/MyWindowModule.jsm");
    MyWindowModule.window2 = window;
    

    然后,您可以在窗口1中使用:

    MyWindowModule.window2.$("#label_id).attr("value","clicked again!");
    
  2. 使用 nsIWindowMediator 查找其他窗口或窗口之间的其他通信方法

最新更新