次のコードがあります
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 ハッシュ (両方のバリアント) を変更した後、アプリがハングすることです。そして興味深いのは、 2 番目のアラートが発生していないことです。そのため、アプリは...しばらくするとクラッシュします。js コンソールには何もありません。デバッグログは言う
スレッド 0x*** はコード 259 (0x103) で終了しました。
グーグルはそれについて何も見つけませんでした。これは一般的なエラー コードのようです。詳細: 私は ChaplinJs を使用しているため、ハッシュ ナビゲーションから逃れることはできません。
チャップリンがシステムをオーバーロードし、どこにも行けないという考えがありましたが、(!) window.on('hashchange',....) の lib のソースにログとアラートを配置しても、何の努力もしていません。そこにも着く。
WP 8.0 は Cordova 4.* と 5.* の両方を試し、xhrXelper.cs を変更しようとしましたが、ナビゲーション自体には関係ありません。
PS: モバイル ナビゲーションでハッシュ変更を無効にするよう jquery mobile が提案していることは知っています。しかし、私はできません:(
PPS: chaplin haschanges の無効化も試みました
new App({routes: routes, controllerSuffix: '-controller', pushState: false,hashChange:true})
しかし、href にハッシュを配置して間隔をチェックし、アプリが再びハングしたため、これも良い結果にはなりませんでした。だから私はそれがwebviewの問題だと思います
追加情報: アプリを継続的に再実行すると、時々機能します (10 回の実行で機能する場合があります)。それは非常に奇妙です。
エミュレータとデバイスは同じように動作します。
更新:「deviceready」イベントの前にナビゲーションを制限することが重要であることをどこかで読んでください。しかし、これも当てはまりません。
Update2: コルドバ プロジェクトをゼロから作成します。deviceready cb にハッシュの変更を追加するとハングする
Update3: 8.1 の同じコードは完璧に動作します