gpt4 book ai didi

javascript - 如何将参数传递给 Javascript 模块?

转载 作者:行者123 更新时间:2023-11-28 10:19:34 26 4
gpt4 key购买 nike

我想使用Javascript Module (JSM) 在我的 Xul 应用程序的单个窗口中,这样我就可以根据需要加载资源。

但是,我需要将窗口传递给 JSM,但我不知道该怎么做。遵循我的尝试:

在我的resource.jsm中:

var EXPORTED_SYMBOLS = ["hello"];

function hello(win) {
win.alert("ALERT FROM JSM!");
}

在我的窗口中调用:

Components.utils.import("resource://module/resource.jsm");
hello(window);

但我得到:

win is undefined

在resource.jsm中。

知道如何让它发挥作用吗?

最佳答案

您将 hello 函数的参数命名为 window 可能会导致问题。虽然 window 不是保留字,但大多数浏览器环境将其视为不可分配的常量。尝试:

function hello( obj ) {
obj.alert("ALERT FROM JSM!");
}

在您的模块中,然后使用 hello(window)hello(document.window)hello(this) 调用它

<小时/>

阅读 Javascript 模块文档后,您似乎需要在模块内创建一个对象,然后通过引用更改其属性。所以在你的 JSM 中:

var EXPORTED_SYMBOLS = ["params", "hello"];

params = {
win: this
};

function hello() {
params.win.alert("ALERT FROM JSM!");
}

然后,您可以通过首先将窗口分配给该参数然后调用该函数来调用:

Components.utils.import("resource://module/resource.jsm");
params.win = window;
hello();

注意:我对 JSM 不太熟悉,不知道是否有更好的方法来做到这一点,但这应该可行。

关于javascript - 如何将参数传递给 Javascript 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5902280/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com