2012-12-19 42 views
35

जो मैं चाहता हूं वह जावास्क्रिप्ट का उपयोग कर <input> फ़ील्ड में टाइपिंग अनुकरण करना है।jQuery का उपयोग कर इनपुट फ़ील्ड में टाइपिंग अनुकरण कैसे करें?

मैं निम्नलिखित कोड है:

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

लेकिन जब मैं पृष्ठ लोड, #test इनपुट क्षेत्र कोई आपके द्वारा लिखा गया वर्ण, '65' की कीकोड है 'ए' का प्रतिनिधित्व करता है, लेकिन कोई 'ए है 'इनपुट।

असल में जो मैं चाहता हूं वह है Greasemonkey का उपयोग कर वेबसाइट में स्वचालित रूप से टाइप करना।

कृपया मुझे कुछ विचार या कुछ पुस्तकालय दें जिसके साथ मैं इसका उपयोग कर सकता हूं।
बहुत बहुत धन्यवाद!

उत्तर

40

आप मुख्य घटनाएं भेज सकते हैं, और उनके लिए कुछ भी सुनकर उन्हें मिल जाएगा, लेकिन वे इनपुट नहीं बदलेंगे, इसलिए आपको A अक्षर दिखाई नहीं देगा, उदाहरण के लिए। यह ज्यादातर एक सुरक्षा चीज है; इसके बारे में चर्चा के लिए "Manually firing events" देखें।

तो, यदि आप पत्र दिखाना चाहते हैं, तो आपको महत्वपूर्ण ईवेंट भेजते समय इनपुट के मूल्य को बदलना होगा। इसके लिए एक jQuery प्लगइन है, "The $.fn.sendkeys Plugin" देखें।

आप देख सकते हैं कि <input> उपयोगकर्ता द्वारा लागू कुंजी, कुंजी घटनाओं और उस प्लगइन को this jsFiddle पर प्रतिक्रिया करता है।

संदर्भ के लिए, यह है कि jsFiddle से कोड का महत्वपूर्ण भाग है:

$("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") ; 
    } 
}); 


प्लगइन पर्याप्त होना चाहिए कि अगर आप सिर्फ "एक <input> पर टाइपिंग अनुकरण" करने की कोशिश कर रहे हैं। हालांकि, क्या आप वास्तव में करने का प्रयास कर रहे हैं पर निर्भर करता है, आप एक या निम्न में से अधिक करने के लिए आवश्यकता हो सकती है:

  1. बस क्या आप इसे होना चाहते करने के लिए पाठ की स्थापना की।
  2. पृष्ठ की जावास्क्रिप्ट उस से ट्रिगर होने पर keydown ईवेंट भेजें।
  3. इसी तरह, पृष्ठ की जावास्क्रिप्ट उस से ट्रिगर होने पर change ईवेंट इत्यादि भेजें।
  4. बस पृष्ठ के जावास्क्रिप्ट को सीधे ढूंढें और कॉल करें। स्क्रिप्ट इंजेक्शन, स्थान हैक, unsafeWindow, और/या @grant none मोड ऐसा करने के लिए उपयोग करें।
  5. कुछ और? अपने असली उद्देश्य और लक्ष्य पृष्ठ से लिंक बताएं।
+1

यह वास्तव में सहायक है :) – shuboy2014