シングルページWebサイトでブラウザの戻るキーを無効にする
1077 ワード
この文書はangularjsが作成した単一ページアプリケーションSPA、例えばvuejsまたはreactに適用する.jsは本論文の議論の範囲内ではない.
私はangularjsとsb-admin 2でフロントエンドフレームワークを実現し、ブラウザの後退キーを考慮せずに$stateと$stateParamsで後退機能を実現しました.もちろん、グローバル単一例やlocalstroge、sessionstorgeで履歴ジャンプデータを処理することもできます.
プロジェクトがオンラインになった後、お客様はページが3級または4級のページにジャンプして、ブラウザの後退ボタンをクリックすると、ページが上級のページに戻った後にパラメータが足りないことを提示して、ページのデータも空白で、この問題を解決するために、私の解決策はブラウザの後退ボタンを無効にして、以下は解決方法です:
アンコールでmodule("appId").run()メソッドでは,urlアドレスの変化を$locationChangeStartで傍受する.コードは次のとおりです.
これで前の問題は回避できますが、私も小さなバグを見つけました.ブラウザの戻るキーを無効にし、ユーザーが業務ページの戻るボタンをクリックすると、ページは前のページに戻ることに成功したが、ブラウザのアドレスバーのurlは変わっておらず、再び戻るボタンをクリックするとurlは正常に戻った.
机能に影响がないため、この问题を深く理解していません.もし高い人がこの问题を解决したり理解したりしたら、教えてください.
私はangularjsとsb-admin 2でフロントエンドフレームワークを実現し、ブラウザの後退キーを考慮せずに$stateと$stateParamsで後退機能を実現しました.もちろん、グローバル単一例やlocalstroge、sessionstorgeで履歴ジャンプデータを処理することもできます.
プロジェクトがオンラインになった後、お客様はページが3級または4級のページにジャンプして、ブラウザの後退ボタンをクリックすると、ページが上級のページに戻った後にパラメータが足りないことを提示して、ページのデータも空白で、この問題を解決するために、私の解決策はブラウザの後退ボタンを無効にして、以下は解決方法です:
アンコールでmodule("appId").run()メソッドでは,urlアドレスの変化を$locationChangeStartで傍受する.コードは次のとおりです.
$rootScope.$on('$locationChangeStart',function(ev,to,from){
if($rootScope.previousState && $rootScope.nowState && $rootScope.previousState == to)
{
console.log('not back');
ev.preventDefault();
}
else{
$rootScope.previousState = from;
$rootScope.nowState = to;
}
});
これで前の問題は回避できますが、私も小さなバグを見つけました.ブラウザの戻るキーを無効にし、ユーザーが業務ページの戻るボタンをクリックすると、ページは前のページに戻ることに成功したが、ブラウザのアドレスバーのurlは変わっておらず、再び戻るボタンをクリックするとurlは正常に戻った.
机能に影响がないため、この问题を深く理解していません.もし高い人がこの问题を解决したり理解したりしたら、教えてください.