저는 Rangy.js를 선택 범위로 사용 해왔고 지금까지 정말 좋아했습니다. 특정 태그 내에서 선택 영역의 텍스트 노드를 감싸고 단추를 클릭 할 때이를 전환하려고합니다. 나는 cssClassApplierModule을 사용하여 훌륭하게 작동한다. (그리고 이름 때문에 의미가있다.) dom 요소에 자체적으로 적용하는 클래스를 주어야한다.클래스 속성없이 Rangy.js를 사용하여 태그를 만들려면 어떻게해야합니까?
Text text text <strong class="test"> selected text </strong> text text text
그리고 나는 그것이 싶습니다 : 나는 범위를 선택하고 예를 들어 강한 태그를 적용 할 때
는그래서 지금, 내 최종 결과는
Text text text <strong> selected text </strong> text text text
코드 나는 지금까지 다음과 같습니다 :
function gEBI(id) {
return document.getElementById(id);
}
var action;
function toggleAction() {
action.toggleSelection();
}
rangy.init();
// Enable buttons
var cssClassApplierModule = rangy.modules.CssClassApplier;
// Next line is pure paranoia: it will only return false if the browser has no support for ranges,
// selections or TextRanges. Even IE 5 would pass this test.
if (rangy.supported && cssClassApplierModule && cssClassApplierModule.supported) {
action = rangy.createCssClassApplier("test", {
elementTagName: "strong",
elementProperties: { }
});
var toggleActionButton = gEBI(nsID);
toggleActionButton.disabled = false;
toggleActionButton.ontouchstart = toggleActionButton.onmousedown = function() {
toggleAction();
return false;
};
}
나는 "CSS"클래스가 전달되는 "text"대신 "null"을 시도했습니다. 토글하지만 더 이상 전환하지 않으며 분명히 정확한 해결책이 아닙니다.
도움이 감사드립니다 .. 감사합니다!
충분히 좋고 멋진 POC (빠른 답장을 보내 주셔서 감사합니다). 당신이 그것에 대해 준비/완료되지 않은 느낌을 요약 할 수있는 가능성은 있습니까? 꽤 잘하는 것처럼 보이지만 복잡한 DOM 선택이 얼마나 복잡한 지 이해할 수 있습니다. –
@AndrewEddy :
요소와 공백 텍스트 노드 처리에 익숙해 져서 문제 또는 불일치가있을 수 있습니다. . 그 외에는 코드를 사용해도되지만 일반적으로 제공 할 테스트와 같은 것이 없으며 아키텍처 나 API에 대해 잘 모르겠습니다. 멈췄다. 또한 버그가있는 경우 문제를 해결하기가 쉽지 않습니다. 작업을 재개 할 때 이전 버전의 코드를 필요에 따라 다시 시작하기 때문에 시작해야 할 것입니다. –
글쎄, 시작하기에 좋은 시간이었고, 기꺼이 도와 줘서 고맙습니다. –