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