1

私は興味深い問題を抱えていると思います.数日間考えて調査した後、解決策を思いつくことができませんでした.

私はphpMyAdminに触発されたWebアプリケーションをコーディングしているため、フレームを使用してコンテンツの配置を制御しています。このため、訪問した URL は常に index.php.. になります。履歴 API のpushState()メソッドを使用して URL を変更し、フレームで訪問中のページを反映する場合を除きます。

ただし、問題はこの方法にあります。ログインすると、ユーザーは から にリダイレクトされlogin.htmlindex.php一瞬、Chrome はパスワードを覚えておいてほしいかどうか尋ねてきます.. 訪問がpushState()メソッドをトリガーすると、その小さなバーが消えます. この動作は、アプリケーションに引き続きコミットしてもらいたいものではありません。ユーザーが必要に応じてパスワードを保存できるようにしたい (私はまだ Cookie を使用していません。これについてはまだ初心者です)。

最後にアクセスしたページを中心に配置できるチェックを考えてみましたが、そのようなことに関する私の経験のためにうまくいきませんでした..問題を解決する方法についてのアイデアについては、これにもっと目を向けてください.

それがまったく役立つ場合、これをトリガーするための私の現在のコードは..

$(window).on('load', function (){
    window.parent.history.pushState(null, "index.php", "index.php");
});

これまでのところ、この動作は Chrome でのみ発生します。Firefox と IE は期待どおりに動作します。

4

2 に答える 2

0

最初のプッシュ状態を避けるために

(function($) {
  var firstLoad=true;
  $(window).on('load', function (){
    if (firstLoad!==true)
      window.parent.history.pushState(null, "index.php", "index.php");
    firstLoad=false;
  });
})(jQuery);
于 2012-09-12T18:25:59.490 に答える
0

これを試して

(function($) { 
    var isFirst = true;


    $(window).on('load', function (evt){

        if(isFirst && wasLastPage('index.html')) return;
        isFirst = false;

        window.parent.history.pushState(null, "index.php", "index.php");

    });

    function wasLastPage(pageName){
        //document.referrer only works in non IE
        var lastPage = (document.referrer)? document.referrer : '';

        return (lastPage.indexOf(pageName) === lastPage.length - pageName.length);
    }

});
于 2012-09-14T01:38:31.053 に答える