0
我使用a script from Tim Down创建高光。现在,我希望用户再次点击浏览器操作以将其删除。从DOM删除添加的高亮
我以为我可以添加其他if
声明,这个片段:
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
,它会删除格式,但它不工作。有什么想法吗?
编辑 做更多的阅读后,我了解到,在execCommand
布尔没有任何与返回的值。我怎样才能改善我的逻辑以扭转背景颜色?它是否可行?
这真是太棒了!非常感谢您的帮助。 – Brian
总是乐于帮忙! (只是单挑:我在'serializeRange()'做了一个小改进。) – gkalpak
好吧,因为我还在学习,我只是为了确保我理解这个改变:你添加的'==='确保选择的开始/结束点不会被DOM重构搞乱,对吧?换句话说,如果这些值不相同,它会测试假广告,然后**添加**突出显示而不是删除? – Brian