【发布时间】:2019-01-04 14:58:25
【问题描述】:
JavaScript execCommand("HiliteColor") 通过添加跨度非常好地添加了高亮,但我希望能够通过检查所选文本是否在高亮显示的跨度中来动态取消高亮显示文本。然后有一个问题,只有一半的选定文本在一个跨度内。我尝试自己添加跨度并尝试通过以下方式取消突出显示它们:
document.getElementsByClassName('highlight').remove();
alert(window.getComputedStyle(document.getElementById("pages"), null).getPropertyValue('background-color'));
alert(document.getElementById("pages").style.backgroundColor);
只是看看我是否可以检查背景然后突出显示,或者我是否可以删除类突出显示。
我的项目在 codepen 上:https://codepen.io/pokepimp007/pen/wxGKEQ
回答
我创建了一个在单击按钮时采用颜色参数的函数。单击删除突出显示按钮时,它会发送参数颜色“透明”:
function Highlight(color) {
document.designMode = "on";
var sel = window.getSelection();
sel.removeAllRanges();
var range = document.createRange();
range.setStart(editor.startContainer, editor.startOffset);
range.setEnd(editor.endContainer, editor.endOffset);
sel.addRange(range);
if (!sel.isCollapsed) {
if (!document.execCommand("HiliteColor", false, color)) {
document.execCommand("BackColor", false, color);
}
}
sel.removeAllRanges();
document.designMode = "off";
}
【问题讨论】:
-
您可能会从中得到启发:stackoverflow.com/a/32551826/5842628 以获取选择 html。
标签: javascript jquery html css highlight