我有一个简单的Titanium应用程序,它打开一个webview,并加载一个URL。我希望链接在默认浏览器中打开,而不是应用程序。
我有一些jQuery代码,它将点击事件添加到页面中的所有链接。
<script>
jQuery('a').click(function() {
console.log("Handler for .click() called for URL: " + this.href);
Ti.App.fireEvent('ynOpenURL', {url: this.href });
});
在app.js文件中我有:
var win = Ti.UI.createWindow();
var mywebview = Ti.UI.createWebView({
url : 'http://xxxx.xxxxx.com/',
enableZoomControls: false
});
win.add(mywebview);
win.open();
Ti.App.addEventListener('ynOpenURL', function(e) {
Ti.API.info('yyyyyy');
Ti.API.info(e.url);
if (Ti.Platform.canOpenURL(e.url)){
Ti.Platform.openURL(e.url);
} else {
alert("Cannot open URL");
}
当我在Android(4.4)上运行应用程序时,网页正确加载。
当我点击手机上的链接时,我在控制台中收到以下内容:
Handler for .click() called for URL: http://xxx.xxxxx.xxx/
Uncaught TypeError: Cannot read property 'App' of undefined (xxxx)
没有记录任何Titanium控制台事件,只记录网页中的javascript事件。
答案 0 :(得分:2)
正如您所提到的,webview正在加载远程网址。因此,远程服务器 Ti.*
或Titanium.*
。
你能做的是:
fireEvent
。titanium http client
加载数据并相应地使用Ti.Platform.openURL
。远程脚本
从远程Web服务器下载的脚本无法访问Titanium命名空间。
要与远程内容交互,请等到内容加载完毕,然后使用evalJS方法在Web视图中执行JavaScript表达式并检索表达式的值。