虽然下面的模拟鼠标点击的简单代码在许多网站上运行良好,但由于某种原因它无法与login.microsoftonline.com一起使用。 "登录"按钮似乎被点击,但不提交,就像使用鼠标手动点击一样。
我缺少什么?感谢。
function click(e) {
var myEvt = new CustomEvent("click", {bubble: true, cancelable: true});
e.dispatchEvent(myEvt);
}
click(document.querySelector('span#cred_sign_in_button'));
Chrome 35
答案 0 :(得分:0)
对于那些可能遇到此类问题的人,请允许我描述我是如何解决的。
问题是点击发生在“登录”按钮之前 - 在非常重的网站上 - 已经准备好了。这可能是因为输入用户ID和密码后在后台发生了一些处理。这解释了为什么当输入字段为空时它会点击,但是当它们被填满时却没有。
解决方案是添加一个计时器,等待一点然后点击。工作得很完美!
重现问题的代码:
document.getElementById('cred_userid_inputtext').value = "Wolfgang@Amadeus.org";
document.getElementById('cred_password_inputtext').value = "http://youtu.be/Rb0UmrCXxVA";
function click(e) {
var myEvt = new CustomEvent("click", {bubble: true, cancelable: true});
e.dispatchEvent(myEvt);
}
click(document.querySelector('span#cred_sign_in_button'));
添加计时器后解决问题的代码。
document.getElementById('cred_userid_inputtext').value = "Wolfgang@Amadeus.org";
document.getElementById('cred_password_inputtext').value = "http://youtu.be/Rb0UmrCXxVA";
function click(e) {
var myEvt = new CustomEvent("click", {bubble: true, cancelable: true});
e.dispatchEvent(myEvt);
}
setInterval (function() { click(document.querySelector('span#cred_sign_in_button')); }, 25);