我是javascript编程的新手,我正在尝试编写一些可以自动填写并提交Google登录表单的JavaScript代码。当前页面为https://accounts.google.com/ServiceLogin?sacu=1&continue=https%3A%2F%2Fwww.google.com.hk%2F%3Fgfe_rd%3Dcr%26ei%3DaaHnU563DIaL8Qeu-oG4Cw%26gws_rd%3Dssl&hl=en
时,以下代码可以正常工作var inputs = document.getElementsByTagName('input');
for(var k=0;k<inputs.length;k++) {
var input = inputs[k] ;
var type = input.getAttribute('type');
if(type == 'email')
input.value = "abc@gmail.com";
if(type == 'password')
input.value = "1234";
}
var forms=document.getElementsByTagName('form');
forms[0].submit();
然后我尝试添加一些代码,这样如果浏览器当前在另一个网页上,该程序将直接发送给Google并自动登录。这是我写的:
function autoSubmit(){
var inputs = document.getElementsByTagName('input');
for(var k=0;k<inputs.length;k++) {
var input = inputs[k] ;
var type = input.getAttribute('type');
if(type == 'email')
input.value = "abc@gmail.com";
if(type == 'password')
input.value = "123";
}
var forms=document.getElementsByTagName('form');
forms[0].submit();
}
document.location.href="https://accounts.google.com/ServiceLogin?sacu=1&continue=https%3A%2F%2Fwww.google.com.hk%2F%3Fgfe_rd%3Dcr%26ei%3DaaHnU563DIaL8Qeu-oG4Cw%26gws_rd%3Dssl&hl=en";
window.onload=autoSubmit();
然而,这不起作用。似乎autoSubmit()函数在Google网页完全加载之前执行。有谁能帮我解决这个问题?
答案 0 :(得分:1)
有两个问题:
首先,你是正确的,早期调用autuSubmit
函数:
window.onload=autoSubmit();
您正在做的是当时正在调用autoSubmit
并将其值分配给window.onload
。
你的意思是:
window.onload=autoSubmit;
请注意,我删除了parens ()
。这指定了一个函数引用。
<强>然而... 强>
这仍然不会做你想做的事。
当您更改页面 - location.href
(应该是window.location.href
,btw)时,您会加载新页面和当前信息 - 所有JavaScript,window.onload
处理程序一切都被抛弃了。
简而言之,使用标准编程无法实现这一目标。
如果您正在尝试为自己制作一些内容,并且您没有尝试让它适合所有人,您可以使用userscript
,它可以在Firefox,Chrome,Safari和Opera下运行。用户脚本允许您添加额外的代码以在网页上运行,但同样,它只会为您运行。