저는이 질문을 단순하게 용서하기 때문에 이것에 절대적인 새내기입니다. 나는 contenteditable div가있다. 이 div의 모든 텍스트는 링크 태그로 묶여 있습니다.범위 내의 시작 컨테이너의 태그 이름을 가져옵니다.
사용자가 이러한 링크 노드 중 2 개 이상에 걸쳐 선택을하면 startContainer 및 endContainer에서 링크 태그의 이름을 식별하고 싶습니다.
아쉽게도 startContainer 노드는 아래 예제 html에서 볼 수있는 단락이나 굵은 태그와 같은 서식 지정 노드입니다.
<div id="myarea" onmouseup="getSelectionHtml();" contenteditable="true">
<a id="1" href=#>text1 <b>text1 text1 </b></a>
<a id="2" href=#>text2 <b>text2 text2 </b></a>
<a id="3" href=#>text3 <b>text3 text3 </b></a>
</div>
그래서 나는 나의 접근 방식은 먼저 startContainer의 이름표를 찾을 수 있어야한다 그림. 링크 태그가 아닌 경우 상위 태그를 쿼리합니다. 그것이 링크 태그가 아니라면 링크 태그를 찾을 때까지 계층 구조의 다음 노드에 대해 다시 쿼리하여 ID를 얻을 수 있습니다.
아주 짧기 때문에 이것은 지금까지 내가 가지고있는 모든 코드입니다. startContainer의 tagName을 찾고 싶지만 "undefined"라는 경고가 나타납니다. 내가 할 수있는 한 범위 객체에 대한 많은 문서를 읽었지만 모든 것이 흩어져 있고 이해하기가 약간 어렵다. 누구나 시작과의 contentEditable 선택의 끝의 링크 태그를 잡는 더 나은 개념 솔루션이있는 경우 그런데
function getSelectionHtml() {
var userSelection;
if (window.getSelection) {
userSelection = window.getSelection();
var selRange = userSelection.getRangeAt(0);
alert(selRange.startContainer.tagName);
}
는, 나는 훨씬 의무 것입니다.
TIA
덕분에 대단히 팀은,이 주사를 수 있습니다. – syd