2009-12-23 1 views
2

사용자가 contenteditable div를 편집 할 수있게하려고하지만 일부 텍스트가 선택되어 있지 않으면 pasteHTML을 사용할 수 없다는 것을 알고 있습니다.IE JS : selection.type == 'None'일 때 pasteHTML()을 사용하는 방법은 무엇입니까?

나는 document.selection.createRange()가 유효한 길이가 0 인 선택 (즉, 위치)을 반환 할 것이라고 생각했지만, 아뇨.

나는 iframe (현재 옵션이 아님)과 관련이없는 해결책을 찾는데 정말 어려움을 겪고 있습니다.

모든 제안/아이디어/질문을 환영합니다.

답변

3

는 선택의 TextRange를 작성하기 전에 초점이 편집 가능한 DIV에 있는지 확인 :

var div = document.getElementById("your_div"); 
div.focus(); 
document.selection.createRange().pasteHTML("<b>PASTED</b>"); 
+0

감사합니다. 이미 어쨌든하고 있습니다! 이것이 몇 번 언급되었지만 중요한 이유에 대해서는 설명하지 않았습니다. – jezmck

+0

위 코드는 저에게 효과적입니다. 작동하지 않는 경우 사용중인 코드를 게시해야합니다. 왜 중요한가 : 선택 항목이 비어 있고 포커스가 편집 가능한 요소에 없다면 IE는 문서의 선택으로 간주하지 않는 것 같습니다. 요소로 포커스를 이동하면이 문제가 해결됩니다. –

+0

나는 이것이 사실 afterall의 원인일지도 모른다라고 생각한다. 나는 테이블 플러그인을 만들려고 노력하고있는 NicEdit이 포커스를 어느 시점에서 움직이고 있다고 의심한다. – jezmck

0

양식 텍스트 영역을 사용할 수 있습니다. 이는 단순하고 크로스 브라우저이지만 스타일이 어느 정도 제한되어 있는지 또는 양식이나 양식 요소를 사용하여 문제가 적절한 지 여부를 알 수 없습니다.

+0

불행하게도,이는 나를 위해 옵션 만 감사하지 않습니다. – jezmck

관련 문제