這是我的情況。我有一個html + css + jquery很好的工作項目,我想用鈦進行調整。這個項目有地理定位+ fb api調用。鈦webview fireEvent addEventListener
我想讓我的項目適應鈦html5項目。我發現的是,我只能通過addEventListener和fireEvent函數調用鈦api(當然只有當我使用webviews時)。
它是我的第一個鈦工程,需要地理定位和Facebook API。
實際上,我開始修改以前的項目,在需要鈦的零件中添加addEventlistener到app.js文件和fireEvents到前一個項目的javascript文件(包含在第一個項目中的html文件中) API調用(我不能在app.js之外調用鈦api)。
問題是我需要返回一些值(對象)。
爲了更好地理解我在做什麼,下面是事件的順序。
鈦項目 (app.js)
var win = Ti.UI.createWindow();
var webview = Ti.UI.createWebView({
url: 'index.html'
});
Ti.App.addEventListener('geolocation',function(){
//some titanium api call
lat = x;lon=y;
Ti.App.fireEvent('geolocation_back',{latitude:lat,longitude:lon});
});
win.add(webview);
win.open();
HTML + CSS + JS項目 (導入文件到index.html的,沒有進口到app.js)
Ti.App.fireEvent('geolocation');
var my_lat ;
var my_lon ;
Ti.App.addEventListener('geolocation_back',function(d){
my_lat = d.latitude;
my_lon = d.longitude;
//do other stuff with my_lat and my_lon
});
希望你明白我在做什麼。
我的問題是:
1)是我在做什麼用鈦和HTML代碼一起工作的正確方法是什麼?
2)有沒有其他方法可以在html代碼中調用titanium api並返回變量/對象?
編輯 這個代碼僅適用於iOS和Android,但不是在Web瀏覽器。似乎內置服務器(Titanium工作室或Android Web瀏覽器模擬器)不會加載Ti。*或Titanium。*對象。無論如何,它使網頁瀏覽器的作品?
我看到網頁移動編譯器在子文件夾中創建了所有鈦API 有titanium.js和TI/*文件夾。任何人都可以解釋爲什麼控制檯說我Ti沒有定義?
這是正確的方法,另一種方法是使用'webview.evalJS()'[調用函數或以其他方式在web視圖中](http://docs.appcelerator。COM /鈦/最新/#!/引導/ Communication_Between_WebViews_and_Titanium)。嘗試'yourWebView.evalJS('alert(「Hello」));' – 2013-03-12 22:39:45
問題是,它只適用於物理設備,它不在Web瀏覽器上。 我想我將不得不從頭開始爲web手機瀏覽器做另一個版本。是對的嗎? – 2013-03-12 22:54:54
等待,你是如何構建webview?你使用鈦來包裝一個遠程網站嗎? – 2013-03-13 03:07:36