这是我的情况。我有一个html + css + jquery很好的工作项目,我想要适应钛。这个项目有geolocation + fb api call。
我想让我的项目适应钛html5项目。我发现只能通过addEventListener和fireEvent函数调用titanium api(当然只有当我使用webview时)。
它'我与我合作的第一个钛项目需要地理位置和facebook api。
实际上,我开始通过在app.js文件中添加addEventlistener并将fireEvents添加到需要钛API的部件中的上一个项目的javascript文件(包含在html文件中的第一个项目中)来修改以前的项目电话(我不能在app.js之外调用钛api)。
问题是我需要返回一些值(对象)。
为了更好地理解我在做什么,这是事件的顺序。
TITANIUM PROJECT (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 PROJECT (导入文件到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代码中调用钛api并返回变量/对象?
修改 此代码仅适用于iOS和Android,但不适用于Web浏览器。似乎内置服务器(Titanium studio或Android Web浏览器模拟器)不加载Ti。*或Titanium。*对象。无论如何,它是否适用于网络浏览器?
我看到Web移动编译器在子文件夹中创建了所有的钛API 有titanium.js和TI / *文件夹。任何人都可以解释我为什么控制台说我没有定义Ti?