2012-12-19 30 views
35

Điều tôi muốn là mô phỏng việc nhập vào trường <input> bằng javascript.Làm thế nào để mô phỏng đánh máy trong lĩnh vực đầu vào bằng cách sử dụng jQuery?

Tôi có đoạn mã sau:

var press = jQuery.Event("keydown"); 
press.ctrlKey = false; 
press.which = 65; 
$("#test").trigger(press); 

Nhưng khi tôi tải trang, #test lĩnh vực đầu vào không có ký tự đánh máy, mã phím của '65' đại diện 'A', nhưng không có 'A ' đầu vào.

Về cơ bản những gì tôi muốn là tự động nhập vào trang web bằng Greasemonkey.

Vui lòng cho tôi một số ý tưởng hoặc một số thư viện mà tôi có thể sử dụng để thực hiện việc này.
Cảm ơn rất nhiều!

Trả lời

40

Bạn có thể gửi các sự kiện quan trọng và mọi thứ lắng nghe họ sẽ nhận được chúng, nhưng chúng sẽ không thay đổi đầu vào, vì vậy bạn sẽ không thấy chữ A xuất hiện. Điều này chủ yếu là một điều bảo mật; xem "Manually firing events" để thảo luận về điều đó.

Vì vậy, nếu bạn muốn thư xuất hiện, bạn phải thay đổi giá trị của đầu vào khi bạn gửi sự kiện quan trọng. Có một plugin jQuery cho điều đó, xem "The $.fn.sendkeys Plugin".

Bạn có thể xem cách <input> phản ứng với các phím do người dùng áp dụng, sự kiện chính và plugin đó tại this jsFiddle.

Để tham khảo, đây là mảnh chìa khóa mã từ jsFiddle rằng:

$("button").click (function (zEvent) { 
    if (zEvent.target.id == "simA_plain") { 
     console.log ("Send Plain key event"); 
     var keyVal = 65; 
     $("#eventTarg").trigger ({ 
      type: 'keypress', keyCode: keyVal, which: keyVal, charCode: keyVal 
     }); 
    } 
    else { 
     console.log ("Use the Plugin to simulate a keystroke"); 
     $("#eventTarg").sendkeys ("B") ; 
    } 
}); 


Đó Plugin sẽ là đủ nếu bạn chỉ cố gắng để "mô phỏng gõ trên một <input>". Tuy nhiên, tùy thuộc vào những gì bạn đang thực sự cố gắng để làm, bạn có thể cần phải làm một hoặc nhiều điều sau đây:

  1. Chỉ cần thiết lập văn bản với những gì bạn muốn nó được.
  2. Gửi sự kiện keydown, nếu javascript của trang kích hoạt.
  3. Tương tự, gửi sự kiện change, v.v. nếu javascript của trang kích hoạt.
  4. Chỉ cần tìm và gọi trực tiếp javascript của trang. Sử dụng chức năng tiêm tập lệnh, vị trí hack, unsafeWindow và/hoặc @grant none chế độ để thực hiện điều đó.
  5. Cái gì khác? Nhà nước mục tiêu thực sự của bạn và liên kết đến trang mục tiêu.
+1

nó thực sự hữu ích :) – shuboy2014

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