2016-06-06 3 views
1

나는 내 문제가 매우 간단하다고 생각했지만 시간을 들여서 만족스러운 해결책을 찾을 수 없다.DocumentFragment가 일반 노드인지 확인

나는 DocumentFragment 요소를 가지고 있으며 일부 HTML 태그로 완전히 감싸 졌는지 확인하려고합니다.

<span>Te<b>s</b>t</span> 

범위 개체를 반환해야합니다 기능 : 같은 DocumentFragment가 들어

entireTagSelected = function (selRange) { 
    var documentFragment = selRange.cloneContents(); 
    if (documentFragment is wrapped entirely by something) { 
    return something; 
    } 
    return undefined; 
} 

: 여기 자바 스크립트로 전환하기 위해 노력하고있어 의사 코드입니다.

Some text<span>Test</span> 

가 정의되지 않은 반환해야합니다 :

그러나 같은 조각에 대한

.

답변

1

documentFragment의 자식을 가져올 수 있으며 length이 1이고 그 값이 nodeType == 1이면 단일 요소입니다.

function entireTagSelected (selRange) { 
 
    var documentFragment = selRange.content 
 
    var children = documentFragment.childNodes 
 
    if (children.length == 1 && children[0].nodeType == 1) 
 
    return children[0] 
 
} 
 

 

 
var template1 = document.createElement('template') 
 
template1.innerHTML = "<span>Te<b>s</b>t</span>" 
 

 
var template2 = document.createElement('template') 
 
template2.innerHTML = "Some text<span>Test</span>" 
 

 
var template3 = document.createElement('template') 
 
template3.innerHTML = "Only text" 
 

 
console.log(entireTagSelected(template1)) 
 
console.log(entireTagSelected(template2)) 
 
console.log(entireTagSelected(template3))

관련 문제