繁体   English   中英

模拟用户单击链接

[英]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.keyCodeevent.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM