請原諒醜陋的代碼,這裏只是我可以用來重現我的錯誤的實際代碼的最簡單的版本。我基本上使用鈦的WebView來打開本地保存的.htm文件,以便我可以利用HTML5圖形功能。我正在做的很好。問題是我需要將一些數據傳遞給htm文件,我正在按照文檔推薦的方式執行 - 使用Ti.App.fireEvent - 並且這個工作...一次。但是,如果我離開窗口並再次導航回它失敗,並給我一個NS_ERROR_NOT_AVAILABLE。我已經嘗試在Firefox中的這個代碼作爲Web預覽,並在Android設備和模擬器中使用相同的問題。很明顯,它有一些問題,如果視圖被回調,它不會以相同的方式加載,我猜測它被從堆棧上拉回來,這與'load'事件監聽器或某事有關,但我不知道如何修復它。這裏是我的代碼的簡化版本,只是爲了演示問題:問題與webview和Ti.App.addEventListener導致崩潰
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>
我想你的HTML文件名應該是沒有的test.html TEST.HTM –
沒有良好的,由於某種原因,Firefox是告訴我該release()不是一個函數。我知道..我看了文檔,它在那裏...重命名使0差異。 –