निम्नलिखित कंटेनर तत्व वर्तमान चयन के आरंभ या अंत सीमा के वापस आ जाएगी, चाहे आप आरंभ या अंत सीमा चाहते हैं निर्दिष्ट करने के लिए बूलियन isStart
का उपयोग कर। यह ज्यादातर मुख्यधारा के ब्राउज़र में काम करेगा। अधिक मजबूती के लिए फीचर परीक्षण जोड़ें।
function getSelectionBoundaryElement(isStart) {
var range, sel, container;
if (document.selection) {
range = document.selection.createRange();
range.collapse(isStart);
return range.parentElement();
} else {
sel = window.getSelection();
if (sel.getRangeAt) {
if (sel.rangeCount > 0) {
range = sel.getRangeAt(0);
}
} else {
// Old WebKit
range = document.createRange();
range.setStart(sel.anchorNode, sel.anchorOffset);
range.setEnd(sel.focusNode, sel.focusOffset);
// Handle the case when the selection was selected backwards (from the end to the start in the document)
if (range.collapsed !== sel.isCollapsed) {
range.setStart(sel.focusNode, sel.focusOffset);
range.setEnd(sel.anchorNode, sel.anchorOffset);
}
}
if (range) {
container = range[isStart ? "startContainer" : "endContainer"];
// Check if the container is a text node and return its parent if so
return container.nodeType === 3 ? container.parentNode : container;
}
}
}
स्रोत
2009-08-26 19:22:42
यह ब्राउज़र के बीच असंगत परिणाम देगा और मूल प्रश्न का उत्तर नहीं देगा। आईई में आपको वह तत्व मिलता है जिसमें संपूर्ण चयन होता है, जबकि अन्य ब्राउज़रों में आपको उस नोड के पैरेंट मिलेंगे जिसमें चयन की शुरुआत होती है (जो एक टेक्स्ट नोड या तत्व हो सकता है)। –