XUL + javascript module : TypeError: xxx.yyyy is not a function
XUL + javascript module : TypeError: xxx.yyyy is not a function
我正在玩 XUL 和模块 (https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Using)
我定义了一个小模块:在hello01/chrome/content/js/hello.jsm
下
this.EXPORTED_SYMBOLS = ["Hello", "foo"];
function foo() {
return "foo";
}
var Hello = {
name : "bar",
size : 3,
incr : function()
{
this.size++;
return this.size;
},
open : function()
{
return this.incr();
}
};
这个模块是从hello01/chrome/content/main.js
加载的
Components.utils.import("chrome://hello/content/js/hello.jsm");
function jsdump(str) {
Components.classes['@mozilla.org/consoleservice;1']
.getService(Components.interfaces.nsIConsoleService)
.logStringMessage(str);
}
function showMore() {
document.getElementById("more-text").hidden = false;
jsdump("Hello!");
jsdump(Hello.incr());
jsdump(Hello.open());
}
来自 xul window:
(...)
<button label="More >>" oncommand="showMore();"/>
(...)
当我点击按钮时,我在 jsconsole 中看到:
Hello !
4
Error: TypeError: Hello.open is not a function
Source File: chrome://hello/content/main.js
Line: 14
为什么 xul 知道 Hello.incr 但不知道 Hello.open ?
更新:代码可在此处获得:https://github.com/lindenb/xul-bootstrap
好的,明白了:XUL-Runner 在 ${HOME}/${VENDOR}
下缓存了一些文件
它默默地忽略了我的更改并使用了缓存中的旧文件。
参见 XULRunner ignores updates on edited files
我正在玩 XUL 和模块 (https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Using)
我定义了一个小模块:在hello01/chrome/content/js/hello.jsm
下this.EXPORTED_SYMBOLS = ["Hello", "foo"];
function foo() {
return "foo";
}
var Hello = {
name : "bar",
size : 3,
incr : function()
{
this.size++;
return this.size;
},
open : function()
{
return this.incr();
}
};
这个模块是从hello01/chrome/content/main.js
加载的Components.utils.import("chrome://hello/content/js/hello.jsm");
function jsdump(str) {
Components.classes['@mozilla.org/consoleservice;1']
.getService(Components.interfaces.nsIConsoleService)
.logStringMessage(str);
}
function showMore() {
document.getElementById("more-text").hidden = false;
jsdump("Hello!");
jsdump(Hello.incr());
jsdump(Hello.open());
}
来自 xul window:
(...)
<button label="More >>" oncommand="showMore();"/>
(...)
当我点击按钮时,我在 jsconsole 中看到:
Hello !
4
Error: TypeError: Hello.open is not a function
Source File: chrome://hello/content/main.js
Line: 14
为什么 xul 知道 Hello.incr 但不知道 Hello.open ?
更新:代码可在此处获得:https://github.com/lindenb/xul-bootstrap
好的,明白了:XUL-Runner 在 ${HOME}/${VENDOR}
下缓存了一些文件
它默默地忽略了我的更改并使用了缓存中的旧文件。
参见 XULRunner ignores updates on edited files