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