0
나는 a script from Tim Down을 사용하여 반전을 만듭니다. 이제 사용자가 브라우저 조치를 다시 클릭하여 제거해야합니다.DOM에서 추가 된 강조 표시를 제거하십시오.
function makeEditableAndHighlight(colour) {
var range, sel = window.getSelection();
if (sel.rangeCount && sel.getRangeAt) {
range = sel.getRangeAt(0);
}
document.designMode = "on";
if (range) {
sel.removeAllRanges();
sel.addRange(range);
}
// Use HiliteColor since some browsers apply BackColor to the whole block
if (!document.execCommand("HiliteColor", false, '#FFFF00')) {
document.execCommand("BackColor", false, '#FFFF00');
}
if (!document.execCommand("HiliteColor", true, '#FFFF00')) { // Added this logic
document.execCommand("removeFormat", false, null);
}
document.designMode = "off";
}
내 생각은 "HiliteColor"
이 true
을 반환하는 경우, 그것은 서식을 제거한다고했지만, 그것은 작동하지 않습니다 :
if
문을 추가 할 수 있습니다 생각했다. 이견있는 사람?
편집 더 읽기를 수행 한 후, 나는 execCommand
에서 부울 값을 반환 함께 할 아무것도하지 않는 것을 배웠다. 논리를 개선하여 배경색을 바꿀 수 있습니까? 심지어 할 수 있습니까?
이 환상적이었다! 이걸 도와 주셔서 고맙습니다. – Brian
항상 도와 줘서 기쁩니다! (단지 머리말 :'serializeRange()'에서 하나의 사소한 개선을했다.) – gkalpak
그래, 내가 아직 배우기 때문에 나는 그 변화를 이해하고 있는지 확인해야한다. 당신이 추가 한'===' 선택 항목의 시작/끝 지점이 DOM 구조 조정에 엉망이되지 않았는지 확인하십시오. 즉, 값이 동일하게 반환되지 않으면 거짓 광고를 테스트 한 다음 제거하지 않고 강조 표시를 추가 **합니다. – Brian