backbone.js路由器在PhoneGap iOS版本中失败

时间:2012-11-17 19:13:59

标签: jquery ios xcode cordova backbone.js

一旦我尝试在本地计算机上创建PhoneGap 2.2.0版本以及PhoneGap Build云服务,我的backbone.js路由器似乎失败了。

这意味着虽然触摸事件明显被触发,但应用程序上的任何内部链接和导航都不会起作用。

到目前为止,我的应用程序已完美运行,通过Chrome和iOS模拟器进行本地化。我可以找到很多关于jQuery Mobile和与backbone.js路由器的冲突,但我正在使用jQuery 1.8.2(我还测试了早期版本1.7.0到1.8.2)。

在Xcode控制台中,我在点击内部链接时收到错误“无法加载网页并显示错误:帧加载中断”。我在应用程序中使用'/ #link'格式作为内部链接。

我猜这可能是我设置的vanilla PhoneGap Xcode项目中的某种iOS / Xcode安全功能?但有没有我可以更改的设置允许这个?

3 个答案:

答案 0 :(得分:0)

使用Backbone和JQM的路由器可能会更成功,因为它使用JQM事件而不是观察有变化。

https://github.com/azicchetti/jquerymobile-router

答案 1 :(得分:0)

好的,我最好回答我自己的问题,因为我经过一番尝试后找到了解决方法。我现在会尽快回答,但希望稍后再回来并改进它。基本上,而不是使用标记中嵌入的标准链接,如

<a id="myLink" href="/#link">my link</a>

您需要将功能绑定到链接并使用Backbone.js路由器,如下所示:

$('#myLink').tappable(function(event){
    event.preventDefault();

    var url = $(this).attr('href');
    application.router.navigate(url, true);

    return false;
});

就我而言,我已经在使用jquery.tappable.js http://aanandprasad.com/articles/jquery-tappable/来提高我的用户界面的响应能力。

我也发现了这样做的另一个好处,就是如果你的单页网页应用程序托管在另一个网站的子文件夹中。通过强制您的应用程序使用Backbone.js路由器,您不会遇到破坏内部链接的相对路径的任何问题。

我认为我在测试期间没有遇到任何问题并且只有一次符合Phonegap的原因是因为我真的在Safari手机上测试(通过主屏幕上的书签)。一旦完成,它就在网络视图中。原生iOS开发者可能能够解释这一点。

答案 2 :(得分:0)

朋友。 我尝试使用anthor方式并且它有效。 只需删除飞溅    我的链接