瘦长 |如何使用 span 标签上的点击事件删除突出显示的文本?
Rangy | How to remove highlighted text with click event on span tag?
正如rangy library
所说,我们需要select text
使其高亮和移除高亮。
为了突出显示它包括span tag
。
为了删除突出显示的文本,我想单击 span tag
而不是 select 该文本。
这是library
去除高亮的方法:
unhighlightSelection: function(selection) {
selection = selection || api.getSelection();
console.log(selection.getAllRanges())
var intersectingHighlights = this.getIntersectingHighlights( selection.getAllRanges() );
this.removeHighlights(intersectingHighlights);
selection.removeAllRanges();
return intersectingHighlights;
}
此处 selection
变量占用 api.getSelection()
而不是 local selection variable
.
我想大家明白我的问题就够了。
如果你愿意,我可以给出更多的描述。
我可以不使用它来占用与api.getSelection()
相同的selection variable
吗?
或者我做了什么来实现它?
如有任何建议,我将不胜感激。
谢谢
假设你想要的是能够点击一个高亮来摆脱它,我建议如下(支持IE 6-8;不知道你是否需要)但 Rangy 支持它)。关键方法是 getHighlightForElement()
和 removeHighlights()
:
document.onclick = function(e) {
e = e || window.event;
var target = e.target || e.srcElement;
var highlight = highlighter.getHighlightForElement(target);
if (highlight) {
highlighter.removeHighlights( [highlight] );
}
};
正如rangy library
所说,我们需要select text
使其高亮和移除高亮。
为了突出显示它包括span tag
。
为了删除突出显示的文本,我想单击 span tag
而不是 select 该文本。
这是library
去除高亮的方法:
unhighlightSelection: function(selection) {
selection = selection || api.getSelection();
console.log(selection.getAllRanges())
var intersectingHighlights = this.getIntersectingHighlights( selection.getAllRanges() );
this.removeHighlights(intersectingHighlights);
selection.removeAllRanges();
return intersectingHighlights;
}
此处 selection
变量占用 api.getSelection()
而不是 local selection variable
.
我想大家明白我的问题就够了。
如果你愿意,我可以给出更多的描述。
我可以不使用它来占用与api.getSelection()
相同的selection variable
吗?
或者我做了什么来实现它?
如有任何建议,我将不胜感激。
谢谢
假设你想要的是能够点击一个高亮来摆脱它,我建议如下(支持IE 6-8;不知道你是否需要)但 Rangy 支持它)。关键方法是 getHighlightForElement()
和 removeHighlights()
:
document.onclick = function(e) {
e = e || window.event;
var target = e.target || e.srcElement;
var highlight = highlighter.getHighlightForElement(target);
if (highlight) {
highlighter.removeHighlights( [highlight] );
}
};