मैं एक संतोषजनक div में पाठ पेस्ट करना चाहता हूं, लेकिन टेक्स्टरेरा के रूप में प्रतिक्रिया देना चाहता हूं।
ध्यान दें कि मैं स्वरूपण रखना चाहता हूं क्योंकि मैं इसे अपने टेक्स्टरेरा में पेस्ट करूँगा (शब्द, एक्सेल ...) से।
तो।
1) contenteditable div में टेक्स्ट पेस्ट
2) मैं क्लिपबोर्ड से पाठ प्राप्त
3) मैं क्लिपबोर्ड से मेरी पाठ क्षेत्र के लिए अपने मूल्य धक्का, (न जानते हैं कि कैसे ??)
4) मेरे पाठ क्षेत्र से मूल्य प्राप्त करें और इसे मेरे contenteditable div
कोई सुझाव दें?सादे पाठ के रूप में पेस्ट करें कंटेंटेंटेबल div और textarea (शब्द/एक्सेल ...)
उत्तर
वर्तमान समाधान में सही काम करता है आईई/एसएएफ/एफएफ लेकिन फिर भी मैं जब माउस क्लिक के साथ चिपकाने "गैर" कीबोर्ड की घटनाओं, के लिए एक ठीक जरूरत है ... कुंजीपटल "पेस्ट" की घटनाओं के लिए वर्तमान समाधान:
$(document).ready(function() {
bind_paste_textarea();
});
function bind_paste_textarea(){
var activeOnPaste = null;
$("#mypastediv").keydown(function(e){
var code = e.which || e.keyCode;
if((code == 86)){
activeOnPaste = $(this);
$("#mytextarea").val("").focus();
}
});
$("#mytextarea").keyup(function(){
if(activeOnPaste != null){
$(activeOnPaste).focus();
activeOnPaste = null;
}
});
}
<h2>DIV</h2>
<div id="mypastediv" contenteditable="true" style="width: 400px; height: 400px; border: 1px solid orange;">
</div>
<h2>TEXTAREA</h2>
<textarea id="mytextarea" style="width: 400px; height: 400px; border: 1px solid red;"></textarea>
मैं सीकेडिटर के मूल डेवलपर हूं और पिछले 4 महीनों के लिए संयोग से मैं क्लिपबोर्ड समर्थन और संबंधित सामान पर काम कर रहा था :) दुर्भाग्य से मैं आपको पूरी तरह से वर्णन करने में सक्षम नहीं हूं कि पेस्टिंग कैसे संभाली जाती है, क्योंकि कहानियों की कहानियां मेरे द्वारा प्रत्यारोपण लिखने के बाद भी मेरे लिए बहुत मुश्किल है: डी
हालांकि, यहां कुछ हैं ई संकेत जो आपकी मदद कर सकते हैं:
wysiwyg संपादक नहीं लिखें - मौजूद एक का उपयोग करें। यह आपके पूरे समय का उपभोग करने जा रहा है और फिर भी आपका संपादक छोटी गाड़ी होगी। हम और अन्य लोगों से ... दो मुख्य संपादकों (अनुमान है कि केवल तीन मौजूद हैं) इस पर वर्षों से काम कर रहे हैं और हमारे पास अभी भी पूर्ण बग सूचियां हैं;)।
यदि आपको वास्तव में अपना खुद का संपादक लिखने की आवश्यकता है तो http://dev.ckeditor.com/browser/CKEditor/trunk/_source/plugins/clipboard/plugin.js देखें - यह पुराना प्रत्यारोपण है, इससे पहले कि मैं इसे दोबारा लिखूं, लेकिन यह हर जगह काम करता है जहां यह संभव है। कोड भयानक है ... लेकिन यह आपकी मदद कर सकता है।
आप सभी ब्राउज़रों को केवल एक ईवेंट
paste
द्वारा संभालना संभव नहीं होगा। चिपकाने के सभी तरीकों को संभालने के लिए हम दोनों -beforepaste
औरpaste
दोनों का उपयोग कर रहे हैं।ब्राउज़र की क्विर्क की संख्या (बड़ी संख्या: डी) है जिसे आपको संभालने की आवश्यकता होगी। मैं आपको उनका वर्णन नहीं कर सकता, क्योंकि कुछ हफ्तों के बाद भी मुझे उन सभी को याद नहीं है। हालांकि, हमारे डॉक्स से छोटे अंश आपके लिए उपयोगी हो सकता है:
पेस्ट कमांड (गैर देशी पेस्ट द्वारा प्रयोग किया जाता है - हमारे टूलबार से जैसे) देशी संदर्भ मेनू से
* fire 'paste' on editable ('beforepaste' for IE) * !canceled && execCommand 'paste' * !success && fire 'pasteDialog' on editor
पेस्ट & मेनूबार
(Fx & Webkits are handled in 'paste' default listner. Opera cannot be handled at all because it doesn't fire any events Special treatment is needed for IE, for which is this part of doc) * listen 'onpaste' * cancel native event * fire 'beforePaste' on editor * !canceled && getClipboardDataByPastebin * execIECommand('paste') -> this fires another 'paste' event, so cancel it * fire 'paste' on editor * !canceled && fire 'afterPaste' on editor
बाकी चाल - आईई पर हम दोनों पेस्ट घटनाओं के लिए सुनते हैं, बाकी केवल
paste
के लिए। हमें आईई पर कुछ घटनाओं को रोकने की जरूरत है, क्योंकि चूंकि हम कभी-कभी सुन रहे हैं, इससे दोगुनी हैंडलिंग हो सकती है। यह अनुमान है कि यह सबसे मुश्किल हिस्सा है।-
ध्यान दें कि मैं स्वरूपण रखना चाहता हूं क्योंकि मैं इसे अपने टेक्स्टरेरा (शब्द, एक्सेल ...) में पेस्ट कर दूंगा।
स्वरूपण के कौन से हिस्से आप रखना चाहते हैं? Textarea केवल मूलभूत रखेंगे - ब्लॉक स्वरूपण।
http://dev.ckeditor.com/browser/CKEditor/trunk/_source/plugins/wysiwygarea/plugin.js#L120 लाइन 123 तक देखें - यह कार्य का अंतिम भाग है - चयन में सामग्री डालने।
@ हे! किसी भी मौके पर आप जानते हैं कि आईफ्रेम में दिए गए लिंक क्लिक करने योग्य क्यों नहीं हैं? लेकिन वे सही क्लिक का उपयोग करते समय काम कर रहे हैं -> एक नई विंडो में खुलें। वह महान होगा। आपका उत्पाद रास्ते से बढ़िया है! – Ced
मैंने चयन को सहेजने और पुनर्स्थापित करने के लिए rangy library का उपयोग करके इसे हासिल किया है।
मैं उसी कार्य में लाइब्रेरी का उपयोग करके कुछ अन्य काम भी करता हूं, जिसे मैंने इस उदाहरण से अलग कर दिया है, इसलिए यह इष्टतम कोड नहीं है।
एचटीएमएल
<div><div id="editor"contenteditable="true" type="text"></div><div>
जावास्क्रिप्ट
var inputArea = $element.find('#editor');
var debounceInterval = 200;
function highlightExcessCharacters() {
// Bookmark selection so we can restore it later
var sel = rangy.getSelection();
var savedSel = sel.saveCharacterRanges(editor);
// Strip HTML
// Prevent images etc being pasted into textbox
inputArea.text(inputArea[0].innerText);
// Restore the selection
sel.restoreCharacterRanges(editor, savedSel);
}
// Event to handle checking of text changes
var handleEditorChangeEvent = (function() {
var timer;
// Function to run after timer passed
function debouncer() {
if (timer) {
timer = null;
}
highlightExcessCharacters();
}
return function() {
if (timer) {
$timeout.cancel(timer);
}
// Pass the text area we want monitored for exess characters into debouncer here
timer = $timeout(debouncer, debounceInterval);
};
})();
function listen(target, eventName, listener) {
if (target.addEventListener) {
target.addEventListener(eventName, listener, false);
} else if (target.attachEvent) {
target.attachEvent("on" + eventName, listener);
}
}
// Start up library which allows saving of text selections
// This is useful for when you are doing anything that might destroy the original selection
rangy.init();
var editor = inputArea[0];
// Set up debounced event handlers
var editEvents = ["input", "keydown", "keypress", "keyup", "cut", "copy", "paste"];
for (var i = 0, eventName; eventName = editEvents[i++];) {
listen(editor, eventName, handleEditorChangeEvent);
}
- 1. java.net.URLConnection.guessContentTypeFromStream और पाठ/सादे
- 2. एचटीएमएल को सादे पाठ में कनवर्ट करें और रूबी
- 3. php vcard सादे पाठ
- 4. डेटाबेस बनाम सादे पाठ
- 5. सादे पाठ में जावा लॉग
- 6. किसी अन्य पृष्ठ से div में सादे पाठ को कैसे लोड करें
- 7. jQuery सेट Textarea कर्सर पाठ
- 8. विंडोज फोन में प्रोग्रामेटिक रूप से कॉपी/पेस्ट कैसे करें?
- 9. एक div के ऊपर और नीचे पाठ रैप कैसे करें?
- 10. एक्लिप्स में कॉपी और पेस्ट प्रत्येक पेस्ट लाइन
- 11. इनलाइन-ब्लॉक div में पाठ
- 12. गो में आरएसए कुंजी के साथ सादे पाठ को एन्क्रिप्ट और डिक्रिप्ट कैसे करें?
- 13. जोड़ना लाइन एक पाठ/सादे ईमेल
- 14. रोकें कॉपी/पेस्ट और राइट क्लिक करें पाठ बॉक्स के लिए (ईमेल पते)
- 15. सबमिट बटन के रूप में एक div का उपयोग करें
- 16. div ब्लॉक को भरने के लिए textarea कैसे बनाएं?
- 17. प्री-पेस्ट पर jquery आग में इवेंट पेस्ट क्यों करें?
- 18. पार्स <br> सादे पाठ के लिए नया पैराग्राफ
- 19. एक div के अतिप्रवाह पाठ को किसी अन्य div में स्थानांतरित करने के लिए कैसे करें
- 20. नमूना सिंक एडाप्टर पासवर्ड सादे पाठ संग्रहित?
- 21. Textarea आकार
- 22. पाठ div या अनुच्छेद
- 23. सी # विनफॉर्म के साथ कस्टम कॉपी/पेस्ट व्यवहार जबकि पाठ संपादन प्रतिलिपि/पेस्ट
- 24. मेरी PHP फाइलें सादे पाठ के रूप में क्यों दिख रही हैं?
- 25. PHP ओपोड वास्तव में निष्पादित बाइनरी कोड से कैसे संबंधित है? सादे पाठ के रूप
- 26. फेसबुक एंड्रॉइड एसडीके को पासवर्ड को सादे पाठ के रूप में प्रदर्शित करने से रोकना
- 27. textarea :: चयन और :: - moz -lection
- 28. संतोषजनक div में सभी पाठ का चयन कैसे करें?
- 29. गतिशील रूप से एक Textarea स्क्रॉलिंग
- 30. Textarea Codeigniter
देखें http://stackoverflow.com/questions/2176861/javascript-get-clipboard-data-on-paste-event- क्रॉस-ब्राउज़र/2177059 # 2177059। –
समस्या डेटा नहीं मिल रही है, मैंने अपने क्लिपबोर्ड से अपने डेटा को प्राप्त करने के लिए पहले से ही अपनी विधि का उपयोग किया है। लेकिन मेरे क्लिपबोर्ड डेटा को अपने टेक्स्टरेरा में "पेस्ट" करने के लिए, मेरी समस्या – Ziggiej
है, आप केवल टेक्स्टरेरा पर ध्यान केंद्रित करके और ब्राउज़र को पेस्ट ईवेंट के दौरान पेस्ट करने की अनुमति देकर ऐसा कर सकते हैं। –