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

避免最初的 pushstate

(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 回答