我在书签中使用JavaScript来填充网站上的表单元素:
javascript:var f = document.forms[0];
f.getElementsByTagName('input')[0].value = 'myname';
f.getElementsByTagName('input')[1].value = 'mypassword';
f.getElementsByTagName('input')[2].click
这很有效。然而,我想创建的是一个bookmarklet,以便它打开目标页面,并在那里填充值;然而,似乎加载了页面,其他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);
一旦我知道目标页面已满载,我该如何加载我的脚本?
答案 0 :(得分:8)
我不使用GreaseMonkey作为个人规则来代码不应该使用它的浏览器。当您的系统被锁定并且不允许安装Greasemonkey,Roboform等时,Bookmarklets是一种自动登录的最小公分母方法。
我编写了很多登录bookmarklet,并考虑了你要做的事情:添加一些在页面加载后执行的脚本。我来到这个页面寻找解决方案,但现在我很高兴它不起作用。
考虑一下这种安全问题。如果可以将键击回应到加载的页面,它也可以听到击键并将它们发送到其他地方 - 非常糟糕。
如果您想自动登录,请尝试这样的书签模式(删除换行符):
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页面。一旦加载页面上的用户名字段可用,再次单击相同的链接将填写表单并提交。
所以它比您希望的多一次点击,但如果您将书签放在工具栏上,那几乎没有任何延迟。祝你好运!
答案 1 :(得分:2)
Greasemonkey内置于Chrome中,听起来就像是在尝试重新发明轮子。安装一个JS文件,它将在页面加载时运行。