2015-09-13 18 views
9

Tôi đang cố gắng thực hiện các sự kiện bàn phím trong trang web thông qua javascript vì Hành động không được hỗ trợ trong trình duyệt Safari.Mô phỏng sự kiện bàn phím qua javascript

Để bắt đầu, tôi đã tạo một biểu mẫu đơn giản (được đưa ra bên dưới) và cố gắng duyệt qua các hộp văn bản nhưng nó không hoạt động.

Tập lệnh Java được sử dụng: (ubuntu và trình duyệt chrome). Tôi đã kích hoạt tập lệnh trong bảng điều khiển trình duyệt chrome.

var pressTabKey = document.createEvent("KeyboardEvent"); 
pressTabKey.initKeyboardEvent("keypress", true, true, null, false, false, false, false, 9, 0); 
document.getElementById('1234').focus(); 
document.getElementById('1234').dispatchEvent(pressTabKey); 

HTML Form:

<html>  
    <head>   
    </head> 
    <body> 
     <p>Test Page </p>  
     <form> 
     <input id="1234" type="text" value="Enter Here"> 
     <br> 
     <br> 
     <input id="1235" type="text" value="Enter Here">   
     </form> 
    </body> 
    </html> 
+0

Không phải là bản sao của http://stackoverflow.com/questions/961532/firing-a-keyboard-event-in-javascript? – Capsule

+0

Tôi đã thực hiện chuỗi đó và sử dụng các hàm và tham số đó. Nhưng tôi không thể mô phỏng các sự kiện bàn phím như tabough eventhough tôi có thể mô phỏng các sự kiện chuột. Dù sao, tôi sẽ kiểm tra lại hai blog đó. – user1925406

+0

Có thể đây là trợ giúp: http://stackoverflow.com/questions/596481/simulate-javascript-key-events – Jos

Trả lời

3

Hope this helps:

https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Creating_and_triggering_events

Ví dụ: tôi có thể tạo một sự kiện và sử dụng dispatchEvent() để kích hoạt nó:

var pressTabKey = new Event('keydown'); 
document.getElementById('1234').addEventListener('keydown', function() { alert("hi!"); }); 
document.getElementById('1234').dispatchEvent(pressTabKey); 

Các createEvent function() bị phản đối: https://developer.mozilla.org/en-US/docs/Web/API/Document/createEvent


EDIT: Bạn chỉ có thể đọc các mã chủ chốt từ một KeyDown hoặc sự kiện phím nhấn, như vậy:

http://jsfiddle.net/adrielD/me9q1qu6/

HTML

<p>Test Page </p>  
<form> 
    <input id="1234" type="text" value="Enter Here"><br> 
    <input id="1235" type="text" value="Enter Here">   
</form> 

JS:

var tab1 = document.getElementById("1234"); 
var tab2 = document.getElementById("1235"); 

tab1.addEventListener("keydown", function(event) { 
    if(event.keyCode == 9) { 
     event.preventDefault(); 
     tab2.focus(); 
    } 
}); 

tab2.addEventListener("keydown", function(event) { 
    if(event.keyCode == 9) { 
     event.preventDefault(); 
     tab1.focus(); 
    } 
}); 
0

Tôi đã gặp chính xác cùng một vấn đề, đã thử nhiều thứ và kết thúc bằng cách sử dụng AHK để kích hoạt sự kiện bàn phím (và một số sự kiện chuột). Tôi không thể tìm thấy bất kỳ giải pháp chỉ chứa selen nào. AHK chỉ dành cho Windows. Nếu bạn đang sử dụng selen trên các nền tảng khác, như Mac OS, hãy xem this thread.

Với AHK, nó là khá dễ dàng để làm một phím bấm, sau khi cài đặt lấy nét, chỉ cần bắt đầu kịch bản AHK, trong đó bạn gửi chìa khóa ':

send, abc 

AHK có một full-blown ngôn ngữ kịch bản, vì vậy bạn có thể bọc nó trong vòng lặp/điều kiện. Bạn cũng có thể mô phỏng nhấp chuột tại một vị trí cụ thể, nếu cần.

2

Nếu bạn tình cờ có jQuery nạp, bạn có thể làm điều đó như thế này:

$(el).trigger({type: 'keypress', which: 13, keyCode: 13}); 

Những ví dụ của bạn sẽ là:

$("#1234").trigger({type: 'keypress', which: 9, keyCode: 9}); 

Xem http://api.jquery.com/trigger/ cho tài liệu đầy đủ.

Các vấn đề liên quan