簡體   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