我正在创建一个GreaseMonkey脚本,只要用户在浏览器中保存了用户名和密码,该脚本就会自动登录页面。这很简单,它只是检查以确保用户名字段和密码字段不是空白,然后它会自动点击登录按钮。
我偶尔会遇到一个没有登录的问题。页面加载,只是坐在那里。我认为这只是由于在检查用户名和密码字段时页面未完全加载。
因此,我将此添加到我的脚本中。
window.addEventListener("load", Login(), false);
我的问题是......这实际上会等待浏览器在尝试登录之前自动填充这些字段,还是页面加载并且浏览器会在这些字段中填充2个不同的操作?
答案 0 :(得分:2)
您的意思是引用Login
而不是立即执行它吗?
window.addEventListener("load", Login, false);
您的方式在窗口加载之前执行Login
。
答案 1 :(得分:0)
由于自动保存表单的工作方式没有标准,我会在setTimeout()
上设置计时器
未经测试的快速编写代码:
function logMeIn() {
var el = document.getElementById("username");
if (el && el.value !== "") {
// Finish the login
} else {
window.setTimeout(logMeIn, 200);
}
}
logMeIn();
尝试2:
// This is a User Script -- runs in its own encloser, won't pollute names back to the main document.
var loginTimer;
function logMeIn() {
var el = document.getElementById("username");
if (el && el.value !== "") {
// Finish the login
} else {
loginTimer = window.setTimeout(logMeIn, 200);
}
}
logMeIn();
// can't use ".onfocus" -- its a userscript.
// Cancel the timer if the username field gets focus -- if the user tries to enter things.
document.getElementById("username").addEventListner("focus") = function(e) {
if (loginTimer) {
window.clearTimeout(loginTimer);
}
}