0

好的,我创建了一个书签来打开一个网站并为我登录。我让它工作,但只有Ctrl当我点击书签时它才有效。谁能帮我解决这个问题,即使我不持有它也能正常工作Ctrl

window.location.assign("https://www.thewebsiteiwant.com");
window.onload=doThis;
function doThis(){
    document.getElementsByName("username")[0].value="username";
    document.getElementsByName("password")[0].value="password";
    var inputs = document.getElementsByTagName("input");
    for(var i = 0;i < inputs.length; i++){
        if(inputs[i].type === "submit"){
            inputs[i].form.submit();
        }
    }
}

编辑:

是的,我确实知道将我的用户名/密码保存在书签中是一个巨大的安全问题,但如果黑客进入我的工作计算机,他们最后要做的就是我登录包含无用信息的页面.

编辑2:

开始工作了,感谢@DG 帮助我集思广益:

javascript:
var sitexyz = "https://www.thewebsiteiwant.com";
if(document.URL == sitexyz){
    document.getElementsByName("username")[0].value="username";
    document.getElementsByName("password")[0].value="password";
    var inputs = document.getElementsByTagName("input");
    for(var i = 0;i < inputs.length; i++){
        if(inputs[i].type === "submit"){
            inputs[i].form.submit();
        }
    }
} else {
    window.location.assign(sitexyz);
    window.onload=doThis;
    function doThis(){
        document.getElementsByName("username")[0].value="username";
        document.getElementsByName("password")[0].value="password";
        var inputs = document.getElementsByTagName("input");
        for(var i = 0;i < inputs.length; i++){
            if(inputs[i].type === "submit"){
                inputs[i].form.submit();
            }
        }
    }
}
4

2 回答 2

0

在这里,我已经为您清理并制作了一些正确的书签代码;)

// bookmarklet to open a page and login
// option 1: click once to open page, click again to login
// option 2: CTRL+click to open and login; Chrome only.

javascript:(function(w,d){
  var go = 'http://example.com',
    login = ['myUserName','myPass'],
    inpName = ['username','password'];
  function doit(){
    var un = d.getElementsByName(inpName[0]),
      pw = d.getElementsByName(inpName[1]);
    if (!(un && pw)) alert('login form not found!');
    else {
      un[0].value = login[0];
      pw[0].value = login[1];
      pw[0].form.submit();
    }
  }
  if (d.URL == go) doit();
  else {
    w.location.assign(go);
    w.onload = doit;
  }
})(window,document);
于 2013-11-08T01:33:23.030 回答
-1

我通常认为 js 书签是这样形成的:

javascript:document.getElementsByName("username")[0].value="username";...

…当你访问一个页面时你可以触发它。如果 window.onload 能够设置为加载不同的 url - 那么这将是一个相当大的安全问题(因为您可以将脚本注入任何其他页面)。

作为登录页面的更通用解决方案,您最好使用密码管理器(例如 Chrome 随附的密码管理器,或 lastPass 等)。

于 2013-11-06T17:43:15.687 回答