在大多数情况下,这可能不值得,但这是可行的。
经过大量工作后,我设法让应用程序运行 - 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 特定问题)。