Web sayfasının bir bölümünü fare ile seçebilirsiniz.Geçerli seçimi içeren DOM öğesini nasıl alabilirim?
currently selected text'u alabildiğimi biliyorum, ancak geçerli seçimin başlangıcını veya sonunu içeren DOM öğesini nasıl alabilirim?
Web sayfasının bir bölümünü fare ile seçebilirsiniz.Geçerli seçimi içeren DOM öğesini nasıl alabilirim?
currently selected text'u alabildiğimi biliyorum, ancak geçerli seçimin başlangıcını veya sonunu içeren DOM öğesini nasıl alabilirim?
IE'de document.selection.createRange(). ParentElement() öğesini ve gerçek tarayıcılarda window.getSelection() öğesini kullanın. GetRangeAt (0) .startContainer.parentNode. Böyle bir şey: şu başlangıç veya bitiş sınırını istediğiniz belirtmek için boole isStart
kullanarak, konteyner eleman Geçerli seçimin başlangıç veya bitiş sınırın dönecektir
function getSelectedNode()
{
if (document.selection)
return document.selection.createRange().parentElement();
else
{
var selection = window.getSelection();
if (selection.rangeCount > 0)
return selection.getRangeAt(0).startContainer.parentNode;
}
}
. Çoğu yaygın tarayıcıda çalışacaktır. Daha fazla sağlamlık için özellik testleri ekleyin.
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;
}
}
}
Bu, tarayıcılar arasında tutarsız sonuçlar verecektir ve orijinal soruyu yanıtlamamaktadır. IE'de tüm seçimi içeren öğeyi alırsınız, diğer tarayıcılarda ise seçimin başlangıcını içeren düğümün ebeveyni alırsınız (bu, bir metin düğümü veya bir öğe olabilir). –