BlackBerry OS5上的Backbone - 可能吗?

时间:2012-02-14 11:04:01

标签: blackberry jquery-mobile cordova backbone.js blackberry-os5

我正在使用Backbone,jQueryMobile和Phonegap开发移动应用程序。该应用程序在Android,iOS和BB> = 6上运行良好,但在预期的BB5上会出现无数问题。

我现在面临Backbone本身的问题。我正在调试它,看起来问题出在路由定义中。应用程序由于与之相关的事情而在开始时间崩溃(仍在调查,但调试对BB5来说很痛苦......)。

另外,我读到BB5在散列监听方面不会很好用,Backbone依赖于导航,所以我想知道是否有人能够在OS5上创建骨干应用程序,或者根本不可能?

2 个答案:

答案 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特定问题。)