【发布时间】:2015-04-12 19:00:33
【问题描述】:
请原谅这里的丑陋代码就像我可以用来重现我的错误的实际代码的最简单版本一样。我基本上使用钛中的 WebView 打开本地保存的 .htm 文件,以便我可以利用 HTML5 图形功能。我正在做的工作很好。问题是我需要将一些数据传递给 htm 文件,我正在按照文档的建议进行操作 - 使用 Ti.App.fireEvent - 这可以工作......一次。但是,如果我离开窗口然后再次导航回来,它会失败并给我一个 NS_ERROR_NOT_AVAILABLE。我已经在 Firefox 中尝试了此代码作为 Web 预览,并在 Android 设备和模拟器上尝试了此代码,每个都存在相同的问题。显然,如果视图被回调,它不会以相同的方式加载存在一些问题,我猜它是从堆栈中拉回的,这与“加载”事件侦听器或其他东西混淆,但我不知道如何修复它。这是我的代码的简化版本,只是为了演示这个问题:
app.js
Titanium.UI.setBackgroundColor('#000');
var win = Ti.UI.createWindow({
layout: 'vertical',
});
var wv = Ti.UI.createWebView({
url: 'test.htm',
height: '50%'
});
var but = Ti.UI.createButton({
width: 100,
height: 50,
title: 'Press',
});
var wvopen = false;
but.addEventListener('click', function() {
if (wvopen === false) {
win.add(wv);
wvopen = true;
} else {
win.remove(wv);
wvopen = false;
}
});
wv.addEventListener('load', function() {
Ti.App.fireEvent('go');
});
win.add(but);
win.open();
还有.htm文件:
test.htm
<!doctype html>
<html>
<head>
<title>Test</title>
</head>
<body>
<p>A Little Test</p>
<script>
var Ti = window.parent.Ti;
Ti.App.addEventListener('go', function(){
alert(1);
});
</script>
</body>
</html>
【问题讨论】:
标签: android events webview titanium