如何强制您的浏览器记住密码

图片

如果您使用浏览器中内置的密码管理器记住您的所有网络登录,或考虑到最近与LastPass的事件,您已经(或将)不可避免地遇到某些网站,根本不会允许您保存密码。 但是,通过简单的点击或两次鼠标,您可以解决此限制,并强制浏览器记住这些不合作的网站上的密码。

编者按:当然,如果你使用的是LastPass的,这个功能是内置的这篇文章是为那些喜欢使用内置的浏览器保存的密码,而不是把自己的密码在云中。

为什么有些网站不允许我保存密码?

这个答案很简单,这是由于窗体和/或输入元素上的“autocomplete”属性设置为“关闭”。 此属性由Internet Explorer 5引入,并执行其名称建议,阻止自动完成功能应用于任何已明确关闭的字段。

您可以在PayPal的网站(不允许您保存密码)中看到,登录部分的密码字段的自动填充值设置为关闭。 因此,浏览器不会为其自动完成密码数据库选择此字段。

图片

修复:一个简单的JavaScript函数

幸运的是,修复同样简单。 我们只需要将这个属性的值改变为“on”即可。 由于JavaScript处理DOM(文档对象模型)的能力,您可以轻松地通过单击书签来执行此操作。

JavaScript函数嵌入在下面的链接中。 您可以将链接拖动到书签栏或右键单击它,并将目标链接添加为书签。 一旦完成,只需单击书签将运行当前页面上的“允许密码保存”脚本。

允许密码保存

如果上面的链接不工作,那么这里是链接的源。 您可以创建具有以下内容的书签作为源网址:

javascript:(function(){var%20ac,c,f,fa,fe,fea,x,y,z; ac =“autocomplete”; c = 0; f = document.forms; for(x = 0; x <f.length; x ++){fa = f [x] .attributes; for(y = 0; y <fa.length; y ++){if(fa [y] .name.toLowerCase()== ac){fa [y] .value =“on”; c ++;}} fe = f [x] .elements; for(y = 0; y <fe.length; y ++){fea = fe [y] .attributes; for = 0; z <fea.length; z ++){if(fea [z] .name.toLowerCase()== ac){fea [z] .value =“on”; c ++;}}}} alert %20“+ ac +”%20on%20“+ c +”%20objects。“);})();

从我们的测试(使用PayPal作为测试站点),这在Firefox 4和Internet Explorer 9中的预期工作。遗憾的是,尽管启用了自动填充的成功消息,我们无法使它在Chrome中工作。

使用它的过程在每个浏览器几乎相同的Internet Explorer需要一个额外的步骤。

在Firefox中的用法

当您访问不允许保存密码的网站时,请运行“允许密码保存”脚本。 您应该会看到类似下面的通知。

图片

像正常一样输入您的用户名和密码,登录后将提示您保存密码。

图片

下次访问该页面时,您的用户名将自动填写,但不会填入密码。 为了使密码自动填充,您首先必须将焦点放在用户名字段中。 如果密码字段具有焦点,则可以使用鼠标单击或Ctrl + Tab。

图片

现在,当您通过点击或Tab从用户名字段移动焦点时,您的密码将自动填充。

图片

Internet Explorer中的用法

当您访问不允许保存密码的网站时,请运行“允许密码保存”脚本。 您应该会看到类似下面的通知。

图片

像正常一样输入您的用户名和密码,登录后将提示您保存密码。

图片

下次访问该页面时,您的用户名将自动填写,但不会填入密码。 您将需要再次运行“允许密码保存”脚本,您应该看到与上述相同的通知。

图片

为了使密码自动填充,您首先必须将焦点放在用户名字段中。 如果密码字段具有焦点,则可以使用鼠标单击或Ctrl + Tab。

图片

现在,当您通过点击或Tab从用户名字段移动焦点时,您的密码将自动填充。

图片

JavaScript源

如果你好奇脚本的工作原理,这里是良好的格式和注释源。 随意修改它,如你所愿。

function() {
   var ac, c, f, fa, fe, fea, x, y, z;
   //ac = autocomplete constant (attribute to search for)
   //c = count of the number of times the autocomplete constant was found
   //f = all forms on the current page
   //fa = attibutes in the current form
   //fe = elements in the current form
   //fea = attibutes in the current form element
   //x,y,z = loop variables

   ac = "autocomplete";
   c = 0;
   f = document.forms;

   //cycle through each form
   for(x = 0; x < f.length; x++) {
      fa = f[x].attributes;
      //cycle through each attribute in the form
      for(y = 0; y < fa.length; y++) {
         //check for autocomplete in the form attribute
         if(fa[y].name.toLowerCase() == ac) {
            fa[y].value = "on";
            c++;
         }
      }

      fe = f[x].elements;
      //cycle through each element in the form
      for(y = 0; y < fe.length; y++) {
         fea = fe[y].attributes;
         //cycle through each attribute in the element
         for(z = 0; z < fea.length; z++) {
            //check for autocomplete in the element attribute
            if(fea[z].name.toLowerCase() == ac) {
               fea[z].value = "on";
               c++;
            }
         }
      }
   }

   alert("Enabled " + ac + " on " + c + " objects.");
}

赞 (0)
分享到:更多 ()