我用
创建一个新窗口var win = Ti.UI.createWindow({url:'page.js'});
win.listeners = {
'type': function(e){ alert('test'); }
}
win.open();
在page.js中,我将指定的侦听器添加到窗口内的Ti.UI.WebView中。
for (var type in win.listeners) {
Ti.API.info(win.listeners[type])
webView.addEventListener(type, win.listeners[type]);
}
Ti.API.info(win.listeners ['type'])将该函数打印为“< KrollCallback:0xb272160>”
如果没有侦听器,则对webView.fireEvent('type')的调用执行正常。但是如果我像上面那样向webView添加监听器,则对fireEvent的调用会抛出异常。
什么是KrollCallback?如果有侦听器,为什么fireEvent会崩溃?
答案 0 :(得分:0)
问题是使用url:'page.js'和createWindow()会启动一个新的上下文。如果page.js是这样的话,这种类型的设置将起作用:
exports.getWindow(config) {
var webView = Ti.UI.createWebView({});
for (var type in config.listeners) {
webView.addEventListener(type, config.listeners[type]);
}
}
然后,使用如下窗口:
var win = require('page').getWindow({
listeners = {
'event_type': function(e){ alert('event_type test'); }
}
});
win.open();