0

这是我的情况。我有一个 html +css + jquery 运行良好的项目,我想在钛中进行调整。这个项目有地理定位 + fb api 调用。

我想将我的项目改编成钛 html5 项目。我发现我只能通过 addEventListener 和 fireEvent 函数调用 Titan 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 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 网络浏览器模拟器)不加载 Ti.* 或 Titanium.* 对象。有没有办法让它在网络浏览器上运行?

我看到网络移动编译器在子文件夹中创建了所有钛 API,有钛.js 和 TI/* 文件夹。谁能解释我为什么控制台说我没有定义 Ti?

4

1 回答 1

0

正如我在这里所说

我找到了解决办法!

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

var Ti = window.parent.Ti

玩得开心!

于 2013-03-20T14:53:53.717 回答