我如何获得包含当前select的DOM元素?
您可以用鼠标select网页的一部分。
我知道我可以得到当前选中的文本,但是如何获取包含当前select的开始或结束的DOM元素?
在IE中,使用document.selection.createRange()。parentElement()并在真正的浏览器中使用window.getSelection()。getRangeAt(0).startContainer.parentNode。 像这样的东西:
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; } }
以下内容将返回当前select的开始或结束边界的容器元素 ,使用boolean isStart
指定是否需要开始或结束边界。 它将在大多数主stream浏览器中运行。 添加functiontesting以获得更好的健壮性。
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; } } }