模拟用户点击链接

时间:2010-04-18 21:58:30

标签: javascript jquery

我希望在按下某个键时点击一个链接,我把这个jQuery搞定了:

   $('form#form1').bind("keypress", function(e){
        if(e.keycode == 13 || e.keyChar == 13 || e.which == 13){
        $('.LoginBoxButton a').click();
        }   
    });

它不起作用,我已阅读以下内容解释原因:

  

记住这一点非常重要   click()不会触发默认值   链接上的行为,即使没有   别的是阻止它。所以你不能   单独使用click()来模拟   用户点击链接并正在进行   带到另一个网址。

但是,您如何模拟用户点击链接并被带到另一个网址?

3 个答案:

答案 0 :(得分:4)

你可能会这样:

$('form#form1').bind("keypress", function(e){
    if(e.keycode == 13 || e.keyChar == 13 || e.which == 13){
      document.location.href = $('.LoginBoxButton a').attr('href');
    }   
});

答案 1 :(得分:2)

  

但是,您如何模拟用户点击链接并被带到另一个网址?

这是两件不同的事情:

第一个模拟用户点击,是一个非常低级别的任务。我会选择一个允许它无限制的浏览器。

第二个,将用户带到另一个网址,就像分配您想要的网址document.location.href一样简单。

所以,而不是

$('.LoginBoxButton a').click();

使用

document.location.href = $('.LoginBoxButton a').attr('href');

希望这有帮助。

答案 2 :(得分:1)

首先jQuery's 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");
    }
});