我正在使用Backbone,jQueryMobile和Phonegap开发移动应用程序。该应用程序在Android,iOS和BB> = 6上运行良好,但在预期的BB5上会出现无数问题。
我现在面临Backbone本身的问题。我正在调试它,看起来问题出在路由定义中。应用程序由于与之相关的事情而在开始时间崩溃(仍在调查,但调试对BB5来说很痛苦......)。
另外,我读到BB5在散列监听方面不会很好用,Backbone依赖于导航,所以我想知道是否有人能够在OS5上创建骨干应用程序,或者根本不可能?
答案 0 :(得分:2)
我正在更新这个问题,万一有人面临同样的问题:
简短的故事:在OS5上运行Backbone是不可能的。我调试到骨干网,一些正则表达式的指令导致崩溃。即使将来修复这些问题,我们也确定js支持不够好,最后放弃了OS5版本。
答案 1 :(得分:0)
在大多数情况下可能不值得,但这是可行的。
我设法让一个应用程序在经过相当多的工作后运行 - 在OS 5.0中,javascript支持实际上并不是很好,并且调试非常非常慢,如bfcapell的回答所示。
要使主干工作,您需要注释掉使用hashchange事件来处理URL更改的代码(假设正在使用路由器)。这是骨干网的后备,它使用setinterval来轮询更改。
// Depending on whether we're using pushState or hashes, and whether
// 'onhashchange' is supported, determine how we check the URL state.
/*if (this._hasPushState)
{
alert('pushstate');
$(window).bind('popstate', this.checkUrl);
} else if (this._wantsHashChange && ('onhashchange' in window) && !oldIE)
{
alert('hashchange');
$(window).bind('hashchange', this.checkUrl);
} else if (this._wantsHashChange)
{*/
this._checkUrlInterval = setInterval(this.checkUrl, this.interval);
//}
下划线中的foreach方法也需要修改为不使用本机foreach方法。这是正确呈现集合所必需的。
var each = _.each = _.forEach = function (obj, iterator, context)
{
if (obj == null) return;
/*if (nativeForEach && obj.forEach === nativeForEach)
{
obj.forEach(iterator, context);
}
else*/
if (obj.length === +obj.length)
上面应该至少得到主干工作。 (我说主要是因为我有一个完全正常工作的应用程序,但我怀疑及时找到更多OS5特定问题。)