3

我在书签中使用 JavaScript 来填充网站上的表单元素:

javascript:var f = document.forms[0];
f.getElementsByTagName('input')[0].value = 'myname';
f.getElementsByTagName('input')[1].value = 'mypassword';
f.getElementsByTagName('input')[2].click

这行得通。但是,我想创建一个小书签,以便它打开目标页面并在那里填充值;但是,似乎一旦加载了页面,就不会执行其他 JavaScript 代码。因此,以下不起作用。

javascript:window.location("mywebsite");var f = document.forms[0];
f.getElementsByTagName('input')[0].value = 'myname';
f.getElementsByTagName('input')[1].value = 'mypassword';
f.getElementsByTagName('input')[2].click;

我还尝试了 setTimeout 来延迟我的代码的执行,但这没有用。

javascript:var f = document.forms[0];setTimeout("f.getElementsByTagName('input')[0].value = 'myname';f.getElementsByTagName('input')[1].value = 'mypassword';f.getElementsByTagName('input')[2].click;",1000);

一旦我知道目标页面已完全加载,如何加载我的脚本?

4

2 回答 2

8

我不使用 GreaseMonkey 作为个人规则,为不应该使用它的浏览器编写代码。当您的系统被锁定并且不允许安装 Greasemonkey、Roboform 等时,书签是一种自动登录的最小公分母方法。

我编写了很多登录书签并考虑了您要执行的操作:添加一些在页面加载后执行的脚本。我来到这个页面寻找解决方案,但现在我很高兴它不起作用。

考虑一下这对安全的影响。如果可以将击键回显到加载的页面,它还能够监听击键并将它们发送到其他地方——非常糟糕。

如果您想自动登录,请尝试这样的书签模式(删除换行符):

javascript:
    u='my_username';
    p='my_password';
    l='https://my_server/signon.aspx'; 
    if(location!=l)location=l;
    else{
     g=document.getElementById; 
     ue=(g('username') || g('userid') || g('login_name'));
     if(ue){
      ue.value=u;
      pe=(g('password') || g('pw') || g('pin'));
      pe.value = p;
      b=(g('submit_button') || g('signon_button') || g('login_button'));
      document.close();
      if(b)b.click();
     } 
    }

单击该链接一次会将您带到 signon.aspx 页面。一旦加载页面上的用户名字段可用,再次单击相同的链接将填写表单并提交。

因此,这比您希望的要多单击一次,但是如果您将小书签放在工具栏上,则几乎不会有任何延迟。祝你好运!

于 2011-04-14T20:38:45.653 回答
2

Greasemonkey内置在 Chrome 中,听起来您正在尝试重新发明轮子。安装一个 JS 文件,它会在页面加载时运行。

于 2010-09-15T12:33:00.317 回答