钛webview fireEvent addEventListener

时间:2013-03-11 10:59:42

标签: javascript titanium titanium-mobile addeventlistener appcelerator-mobile

这是我的情况。我有一个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?

1 个答案:

答案 0 :(得分:0)

正如我所说here

我找到了解决方案!

只需在您的所有html页面添加下面的简单脚本

  

var Ti = window.parent.Ti

玩得开心!