Javascript Google Chrome range.GetClients在浏览器或预期行为中插入错误?

Javascript Google Chrome range.GetClients在浏览器或预期行为中插入错误?,javascript,jquery,google-chrome,multipleselection,Javascript,Jquery,Google Chrome,Multipleselection,我正在玩Web选择API,并尝试在Google Chrome中实现多重选择(类似于Firefox的Ctrl按钮多重选择)。为了实现这一点,我将使用HTMLCanvas元素以及SelectionAPI和RangeAPI。这是我的密码: //Ctrl + A doesn't work yet that.container.on('mouseup', function (event) { var selection = window.getSelection(), rects, range

我正在玩Web选择API,并尝试在Google Chrome中实现多重选择(类似于Firefox的Ctrl按钮多重选择)。为了实现这一点,我将使用HTMLCanvas元素以及SelectionAPI和RangeAPI。这是我的密码:

//Ctrl + A doesn't work yet
that.container.on('mouseup', function (event) {
  var selection = window.getSelection(),
    rects, range;

  //we select nothing, just click on the text
  if (selection.isCollapsed || selection.rangeCount < 1)
    return;

  //highlight selection
  range = selection.getRangeAt(0);
  rects = range.getClientRects();

  for (let i = 0; i < rects.length; i++) {
    let rect = rects[i];
    canvas.drawRect(rect.left, rect.top,
                        rect.width, rect.height, '#a8d1ff');
  }
});
that.container.on('mousedown', function (event) {
  var range = document.createRange(),
    textRange = range.selectNode(that.container[0]),
    rect = range.getBoundingClientRect();
  canvas.clearRect(rect.left, rect.top, rect.width, rect.height)
});
//Ctrl+A还不起作用
that.container.on('mouseup',function(event){
var selection=window.getSelection(),
矩形,范围;
//我们不选择任何内容,只需单击文本
if(selection.iscollected | | selection.rangeCount<1)
返回;
//突出显示选择
范围=选择。getRangeAt(0);
rects=range.getClientRects();
for(设i=0;i
这样做的目的是允许用户在网页的两个不同区域选择两件事。当我们只在一个段落中选择文本时,它工作得很好,但当我们在几个段落之间选择文本时,它会导致一些意外行为。这是一段简短的视频剪辑,展示了正在发生的事情


我正在运行Chromium 50.0.2661.102 Ubuntu 16.04。

你能准备一把小提琴什么的吗?我已经找到了工作。我的解决方案是根本不在文本中使用块元素。段落可以用double分隔,效果非常好。