按钮单击模拟在Microsoft网站上不起作用

时间:2014-05-28 03:10:07

标签: javascript

虽然下面的模拟鼠标点击的简单代码在许多网站上运行良好,但由于某种原因它无法与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

1 个答案:

答案 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);