2011-11-19 19 views
23

में पेस्ट ईवेंट का पता लगाएं। मैं पेस्ट इवेंट का पता कैसे लगा सकता हूं, पेस्ट को डालने से रोक सकता हूं, तो क्या मैं पेस्ट को केवल पाठ को शामिल करने के लिए पेस्ट को रोक और स्वच्छ कर सकता हूं?सामग्री संपादन योग्य div को दिए गए एक सामग्री योग्य

पेस्ट + sanitize पूर्ण होने के बाद भी मैं फोकस खोना नहीं चाहता हूं।

विचार? धन्यवाद

+1

होगा क्या मददगार एक ऐसा फंड होगा जो पेस्ट घटना को कैप्चर करने से पहले कैप्चर करता है, sanitizes, और उसके बाद कर्सर स्थिति खोने वाली सामग्री संपादन योग्य सामग्री में सुरक्षित सामग्री इंजेक्ट करता है। विचार? –

+1

आईई, सफारी, और क्रोम क्लिपबोर्ड में डेटा तक पहुंचने की अनुमति देता है, लेकिन आपको फ़ायरफ़ॉक्स के लिए वर्कअराउंड के एक बड़े सिरदर्द के साथ आना होगा। बहुत आसान, यदि यह व्यवहार्य है, तो बस पेस्ट को अनुमति देना होगा, और फिर तथ्य के बाद पूरे तत्व की सामग्री को स्वच्छ करना होगा। क्या इससे काम हो जायेगा? – sdleihssirhc

+0

ऐसा करने के लिए एक हैकी तरीका है जिसे मैंने पहले पोस्ट किया है: http://stackoverflow.com/questions/2176861/javascript-get-clipboard-data-on-paste-event-cross-browser/2177059#2177059, http : //stackoverflow.com/questions/4365833/how-can-i-get-the-text-that-is-going-to-be-pasted-in-my-html-text-editor/4365862#4365862 –

उत्तर

20

अद्यतन:

सभी प्रमुख ब्राउज़रों अब आप एक पेस्ट घटना में क्लिपबोर्ड डेटा तक पहुँच दे। नए ब्राउज़र पर एक उदाहरण के लिए Nico Burns's answer देखें और यदि आपको पुराने ब्राउज़र का समर्थन करने की आवश्यकता है तो Tim Down's answer भी देखें।


आप div पर onPaste घटना पेस्ट का पता लगाने के लिए सुन सकते हैं। यदि आप बस पेस्ट को अक्षम करना चाहते हैं तो आप उस श्रोता से event.preventDefault() पर कॉल कर सकते हैं।

चिपकाए गए सामग्री को कैप्चर करने के लिए हालांकि थोड़ा और मुश्किल है क्योंकि onPaste ईवेंट आपको चिपकाए गए सामग्री तक पहुंच नहीं देता है। इस संभाल करने के लिए हमेशा की तरह onPaste ईवेंट हैंडलर से निम्न करने के लिए है:

  • एक डमी div बना सकते हैं और खिड़की सीमाओं के बाहर यह जगह तो यह
  • कदम यह करने के लिए ध्यान केंद्रित div
  • आगंतुकों को दिखाई नहीं है
  • कॉल एक setTimeout(sanitize, 0)

और अपने sanitizing विधि से उपयोग कर एक प्रक्षालक विधि:

  • डमी div खोजने के लिए और
  • एचटीएमएल स्वच्छ यह सामग्री है मिलता है और div
  • कदम फोकस मूल div
  • को वापस हटाने मूल div में स्वच्छ सामग्री सम्मिलित
+1

कुछ पेस्ट में इस तरह के रीडायरेक्ट करने के लिए 'पेस्ट' ईवेंट बहुत देर हो चुकी है, लेकिन सामान्य विचार काम करता है। –

+2

यहां एक और बहुत ही लोकप्रिय समाधान है जिसे क्रॉस ब्राउज़र का परीक्षण किया गया है http://stackoverflow.com/questions/2176861/javascript-get-clipboard-data-on-paste-event-cross-browser – yoshyosh

संबंधित मुद्दे