[英]Simulate the user clicking on a link
我希望在按下某个键时单击一个链接,因此我编写了这个jQuery:
$('form#form1').bind("keypress", function(e){
if(e.keycode == 13 || e.keyChar == 13 || e.which == 13){
$('.LoginBoxButton a').click();
}
});
它不起作用,并且我阅读了以下解释原因:
重要的是要记住,click()不会触发链接的默认行为,即使没有其他阻止它的行为。 因此,您不能单独使用click()来模拟用户单击链接并转到另一个URL的情况。
但是,如何模拟用户单击链接并转到另一个URL的情况?
您可能会这样:
$('form#form1').bind("keypress", function(e){
if(e.keycode == 13 || e.keyChar == 13 || e.which == 13){
document.location.href = $('.LoginBoxButton a').attr('href');
}
});
但是,如何模拟用户单击链接并转到另一个URL的情况?
这是两件事:
首先,模拟用户单击是一项很底层的任务。 我会选择一个没有限制的浏览器。
第二种方法是,将用户带到另一个URL,就像分配您要document.location.href
的URL一样容易。
所以,而不是
$('.LoginBoxButton a').click();
采用
document.location.href = $('.LoginBoxButton a').attr('href');
希望这可以帮助。
首先, jQuery的Event.which 标准化event.keyCode
和event.charCode
-所以你不必检查keyCode
/ charCode
。
其次,确定您是要模拟用户单击元素还是仅重定向到其他位置,因为两者之间存在巨大差异。 当最后一个只是重定向第一个时,首先执行所有连接的mousedown
/ mouseup
/ click
(以给定顺序)事件。 另外,如果click
事件将返回false
重定向,则应将其阻止。
因此,已经给出了第一种情况的代码,但这是用于真实模拟的代码:
<a href="test.html">LsINK</a>
<span>ROBOT</span>
$("a").mousedown(function() { alert("mousedown"); })
.mouseup(function() { alert("mouseup"); })
.click(function() { alert("click"); return false; });
$("span").click(function() {
if (false !== $("a").mousedown().mouseup().triggerHandler("click")) {
alert("Redirect to: " + $("a").attr("href"));
//window.location.href = $("a").attr("href");
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.