1

我有下一个代码

function navigate(_hash){
   alert('before');

   //try#1
   window.location.hash = _hash;
   //try#2
   // window.location.href=window.location.href.split("#")[0]+"#" +url;

   alert('after');

}

navigate('someurl')

问题是在更改 url 哈希(两种变体)后,应用程序就会挂起。有趣的是,第二个警报没有触发。所以应用程序只是......一段时间后崩溃。js控制台中什么都没有。调试日志说

线程 0x*** 已退出,代码为 259 (0x103)。

谷歌对此一无所获。似乎这是一个常见的错误代码。更多细节:我正在使用 ChaplinJs,所以无法摆脱哈希导航。

第二个想法是卓别林使系统过载,我们无法到达任何地方,但是(!)将日志和警报放在 window.on('hashchange',....) 中的 lib 源中也没有做出任何努力,因为我们没有也到那里。

WP 8.0 尝试了 Cordova 4.* 和 5.* 也尝试修改 xhrXelper.cs 但它与导航本身无关。

PS:我知道 jquery mobile 建议禁用 hashchanges onmobile 导航。但我不能:(

PPS:还尝试禁用卓别林的变化

new App({routes: routes, controllerSuffix: '-controller', pushState: false,hashChange:true})

但这也没有产生任何好的结果,因为它将哈希放置到 href 以在间隔中检查它并且应用程序再次挂起。所以我认为这是一个 webview 问题

更多附加信息:应用程序的连续重新运行有时会使其工作(10 次运行可以使其工作)。这很奇怪。

模拟器和设备的行为方式相同。

更新:在某处读到在“deviceready”事件之前限制导航至关重要。但这也不是个案。

Update2:从头开始创建cordova proj。在deviceready cb中添加了哈希更改,它挂起

更新 3:8.1 上的相同代码完美运行

4

0 回答 0