0

這是我的情況。我有一個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沒有定義?

+0

這是正確的方法,另一種方法是使用'webview.evalJS()'[調用函數或以其他方式在web視圖中](http://docs.appcelerator。COM /鈦/最新/#!/引導/ Communication_Between_WebViews_and_Titanium)。嘗試'yourWebView.evalJS('alert(「Hello」));' – 2013-03-12 22:39:45

+0

問題是,它只適用於物理設備,它不在Web瀏覽器上。 我想我將不得不從頭開始爲web手機瀏覽器做另一個版本。是對的嗎? – 2013-03-12 22:54:54

+0

等待,你是如何構建webview?你使用鈦來包裝一個遠程網站嗎? – 2013-03-13 03:07:36

回答

0

正如我所說here

我找到了解決辦法!

只需添加到您所有的HTML頁面的簡單腳本如下

變種TI = window.parent.Ti

有樂趣!