मैं इस contentedittable divएक contenteditable div जो छवियों
<div contenteditable="true" id="text">minubyv<img src="images/smiley/Emoji Smiley-01.png" class="emojiText" />iubyvt</div>
यहाँ है शामिल की कैरट स्थिति पाने के लिए
तो मैं कैरट प्राप्त करना चाहते हैं कोड उत्पादन की एक छवि वर्णन है div की स्थिति और मान लें कि कर्सर अंतिम चरित्र के बाद है। और यह कैरट स्थिति
function getCaretPosition(editableDiv) {
var caretPos = 0,
sel, range;
if (window.getSelection) {
sel = window.getSelection();
if (sel.rangeCount) {
range = sel.getRangeAt(0);
if (range.commonAncestorContainer.parentNode == editableDiv) {
caretPos = range.endOffset;
}
}
} else if (document.selection && document.selection.createRange) {
range = document.selection.createRange();
if (range.parentElement() == editableDiv) {
var tempEl = document.createElement("span");
editableDiv.insertBefore(tempEl, editableDiv.firstChild);
var tempRange = range.duplicate();
tempRange.moveToElementText(tempEl);
tempRange.setEndPoint("EndToEnd", range);
caretPos = tempRange.text.length;
}
}
return caretPos;
}
var update = function() {
console.log(getCaretPosition(this));
};
$('#text').on("mousedown mouseup keydown keyup", update);
प्राप्त करने के लिए अपना कोड है लेकिन समस्या यह है कि यह रिटर्न 6
बजाय 14
है। छवि के बाद देखभाल स्थिति 0
पर वापस जाती है। कृपया इस मामले में कैरेट की स्थिति 14
होने का एक तरीका है।
संपादित
मैं भी कुछ तत्व कैरट स्थिति से शुरू सम्मिलित करना चाहते हैं। तो यह है कि
selectStart = 0;
var update = function() {
selectStart = getCaretPosition(this);
};
function insertEmoji(svg){
input = $('div#text').html();
beforeCursor = input.substring(0, selectStart);
afterCursor = input.substring(selectStart, input.length);
emoji = '<img src="images/smiley/'+svg+'.png" class="emojiText" />';
$('div#text').html(beforeCursor+emoji+afterCursor);
}
आपका कोड शांत है, लेकिन मैं सभी का पता लगाने की जरूरत है एचटीएमएल div की सामग्री टेक्स्ट को ऑनल नहीं करती है, क्योंकि मैं कैरेट स्थिति में div में कुछ अक्षर डाल दूंगा। मेरे प्रश्न संपादित करें देखें। –
@doggiebrezy मैंने इसे काम किया जैसा आप चाहते हैं। मेरा अद्यतन उत्तर देखें। मैंने इसे नवीनतम क्रोम और फ़ायरफ़ॉक्स पर परीक्षण किया है। हालांकि यह आईई पर काम नहीं करता है। –
आपके संपादन के लिए धन्यवाद लेकिन कृपया मुझे एक अंतिम चीज़ के साथ मदद करें। अब मैं कैरेट की स्थिति में कुछ टेक्स्ट या इमेज डालना चाहता हूं और इसलिए मैंने div.html को विभाजित किया है लेकिन मुद्दा यह है कि कैरेट की स्थिति 11 है, माना जाता है कि टेक्स्ट उस छवि को एक के रूप में नहीं बल्कि पूरे आईएमजी को गिनता है।उस बिंदु को गलत स्थानांतरित करके जहां इसे डालने का मतलब है, कृपया मुझे यह समझने में सहायता कर सकते हैं कि div.html में im.html तत्व –