pushState()解除'记住密码'对话框

时间:2012-09-07 01:35:04

标签: javascript jquery google-chrome pushstate

我想我有一个有趣的问题,经过几天的思考和研究,我无法找到解决方案。

我正在编写一个受phpMyAdmin启发的网络应用程序,因此它使用框架来控制内容放置。因此,任何访问过的网址都将始终为index.php ..除非我使用历史API的pushState()方法来更改网址以反映网页中正在访问的网页。

然而,问题来自这种方法;登录后,用户会从login.html重定向到index.php,并且会在一瞬间询问Chrome是否要我记住密码..当访问触发{{{}时,小条会消失1}}方法。这种行为不是我希望应用程序继续提交的行为。我希望用户能够在他们希望的情况下存储他们的密码(我还没有进入cookie,我还是很新)。

我已经尝试过检查我可以围绕访问的最后一页进行检查,但由于我对此类的经验而未能实现这一点......因此,如果有任何关于如何解决的想法,请更多关注这一点问题。

如果它有帮助,我当前触发此代码的代码是..

pushState()

到目前为止,此行为仅发生在Chrome上。 Firefox和IE的行为符合预期。

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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);
    }

});