在我们公司中,我们使用Firefox润滑脂monkey插件在网页上填写登录凭据以打开并自动登录。
这是脚本的外观:
// ==UserScript==
// @name logon
// @namespace https://www.example.com
// @include https://www.example.com
// @version 1
// @grant none
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js
// ==/UserScript==
$(document).ready(function() {
$('input[name=username]').val('*****');
$('input[name=passcode]').val('*****');
$('input[name=send]').click();
});
自升级到Firefox 70后,该脚本不再输入登录凭据。我的印象是,这是由于页面加载缓慢而脚本执行速度很快。
因此,我想在此脚本中插入一个超时。因此,它将仅在打开页面后5秒钟后执行。
我已经尝试了一些在网上找到的示例,但似乎都没有用。
非常感谢您的帮助!
谢谢
如果您的theory关于不起作用的原因是正确的,则下面的代码应该起作用。观察其他一些变化,例如:
someinput.form.submit()
还将提交表单,并删除您必须依靠其存在的一个输入(如果重命名了提交按钮,该脚本仍然有效)。 // ==UserScript==
// @name logon
// @namespace https://www.example.com
// @include https://www.example.com
// @version 1
// @grant none
// @rut-at document-start
// ==/UserScript==
const TIMEOUT = 2000;
const NAME = "***";
const PASSWORD = "***";
document.addEventListener("load", function() {
setTimeout(function() {
document.querySelector("input[name=username]").value = NAME;
document.querySelector("input[name=passcode]").value = PASSWORD;
document.querySelector("input[name=passcode]").form.submit();
}, TIMEOUT);
});
但是您的原始脚本可能也打破了您的想象,例如:
在开发控制台中查找错误。下次询问时,还请演示您尝试过什么以及如何失败,否则您将学不到的知识。