我正在开发一个基于跨浏览器 Web 的注释工具集,它允许用户选择网页的任何部分
- 突出显示,如果您选择:
约翰是<li>大</li> <li>转储</li>
结果
<span style="background-color: rgb(106, 168, 79)">john is</span> <li><span style="background-color: rgb(106, 168, 79)">big</span></li> <li><span style="background-color: rgb(106, 168, 79)">dump</span></li>
- 删除格式:如果您选择:
john
从
<span style="background-color: rgb(106, 168, 79)">john is</span> <li><span style="background-color: rgb(106, 168, 79)">big</span></li> <li><span style="background-color: rgb(106, 168, 79)">dump</span></li>
结果
<span style="background-color: rgb(106, 168, 79)"></span> john <span style="background-color: rgb(106, 168, 79)">is</span> <li><span style="background-color: rgb(106, 168, 79)">big</span></li> <li><span style="background-color: rgb(106, 168, 79)">dump</span></li>
- UNDO/REDO : 很高兴有功能
能够撤消和重做已执行的操作
我有一个突出显示的部分解决方案
function highlight(colour) {
var range, sel;
if (document.selection && (!window.getSelection)) {
// IE case
range = document.selection.createRange();
range.execCommand("BackColor", false, colour);
} else if (window.getSelection) {
// Non-IE case
sel = window.getSelection();
if (sel.getRangeAt) {
range = sel.getRangeAt(0);
}
//without designmode=on, you can't highlight the selected html (chrome)
document.designMode = "on";
if (range) {
sel.removeAllRanges();
sel.addRange(range);
}
// HiliteColor avoids FF3.5 from painting the background of the whole block
if (!document.execCommand("HiliteColor", false, colour) ) {
document.execCommand("BackColor", false, colour);
}
document.designMode = "off";
}
}
由于我的要求与富文本编辑器有很多相似之处,我查看了 ckeditor 的代码和(广泛地)在 google 闭包编辑器中。我已经放弃了对它们的希望,因为它们只能在可编辑的 iframe 中工作。我的要求之一是不允许用户更改原始文本,而只能添加自己的注释(突出显示、内联注释等)。
我很想在这里发表你所有的意见,如果可能的话,我会指出正确的方向。
——崔桑