私は失われています.... pagebeforechangeにJquery Mobileの移行をリダイレクトしようとしています - JQM docsによると。Jquery Mobileの逆方向遷移でhashchangeが2回発生するのはなぜですか?
これは、順方向および逆方向の両方の遷移に有効です。技術的には私は逆方向の遷移に関する問題にぶち当たっています。最初の作品は、すべてのバック - btnのクリック後に、私は2 +バックグラウンドの遷移を取得しています。
私はURLを除外しました(今は完全なパスとパスとオブジェクト($( '#page')のようなもの)のみを渡しています;それはそうではありませんでした。 。トンそれを見つけることは
たぶん他の誰かが何かを見ているか、私にヒントを与えることができます見てみるためにありがとう:。コメントを
簡単なセットアップ:
// hashchange listener - just to see when hashchange fires
$(window).on('hashchange', function(e, data){
console.log("hashchange detected");
});
// re-router
$(document).on("pagebeforechange", function (e, data) {
// block multiple events
if(data.options.fromHashChange == true) {
if(self.options.$blockMultiPbc == true) {
console.log("blocked 1");
self.options.$blockMultiPbc = false;
return;
}
}
// block $('#page') page-calls (triggered from trailing hashchange
if(typeof data.toPage !== 'string') {
console.log("blocked 2");
return;
}
// redirect
if(data.options.fromHashChange == true) {
console.log("executing");
// for hashchanges
self.panelHash(e, data);
} else {
// for changepages
self.panelTrans(e, data);
}
});
// panelHash function - here I reconfig data.options to redirect
panelHash: function(e, data) {
// block multiple pagebeforechanges
self.options.$blockMultiPbc = true;
if (some condition) {
console.log("MULTIVIEW");
// tweak changepage options
data.toPage = ...newULR (not $('object'))
data.options.fromPage = ...new fromPage
data.options.changeHash = true;
data.options.reverse = true;
console.log(newURL);
} else {
// JQM does this
}
}
をここでは、サンプルのページです:sample
(...二つの実験)を、PAGE2メニュー、PAGE3メニューをクリックしreprodudeコンソールをクリアし、コンソール(SINGLE RUN)を確認し、再びブラウザをクリックし、コンソールをチェックし、バック一度ブラウザをクリックし
質問
私は解決策を探しているわけではありません.2回目の後方への移行を2回引き起こす可能性のあるアイデアだけです。
いくつかのアイデアをありがとう!
EDIT
私はより多くのそれは第二の不要なhashchangeが短い遅延の後に来ていることを、明らかになっsriptに追加しているより多くのコンソール。私は最初にJQMs fake_onhashchangeイベントに関連すると思っていましたが、これをすべて削除することはやりませんでした。執着し続ける。
EDIT2は - issue on Githu Bを見つけた - それが私のスクリプトではありません...あー...それでもヒントは歓迎:-)