不支持不连续选择错误停止复制到剪贴板

时间:2016-06-01 08:25:15

标签: ruby-on-rails google-chrome coffeescript ruby-on-rails-3.2

我正在运行以下Coffescript代码,将某些数据复制到用户剪贴板。

ready = ->

copyEmailBtn = document.querySelector('.clipboard-copy')
copyEmailBtn.addEventListener 'click', (event) ->
  targetClass = document.querySelector('.clipboard-copy').dataset.targetClass
  target = document.querySelector(targetClass)
  range = document.createRange()
  range.selectNode target
  window.getSelection().addRange range
  try
    document.execCommand('copy')
  catch err
    console.log 'Oops, unable to copy'
  window.getSelection().removeAllRanges()
  return

if $('.clipboard-copy').length > 0
  $(document).ready(ready)
  $(document).on('page:load', ready)

When I click the related button to start the copy process chrome throws the following error

这个问题是我无法追踪它,因为它只发生在四次尝试中的一次。

复制按钮按预期工作,其他3次4次,但是每当发生此错误时,它都不会复制文本。

我没有尝试任何其他浏览器,因为我们的应用程序无法在任何其他浏览器中运行而且不应该。

之前有没有人处理过这个错误?

我从代码中看到了以下建议 Discontiguous selection is not supported

关于此错误的所有其他报告都说它不应该影响功能,更像是一个详细的警告。

1 个答案:

答案 0 :(得分:0)

我用以下代码修复了它

ready = ->

copyEmailBtn = document.querySelector('.clipboard-copy')
copyEmailBtn.addEventListener 'click', (event) ->
  window.getSelection().removeAllRanges()
  targetClass = document.querySelector('.clipboard-copy').dataset.targetClass
  target = document.querySelector(targetClass)
  range = document.createRange()
  range.selectNode target
  window.getSelection().addRange range
  try
    document.execCommand('copy')
  catch err
    console.log 'Oops, unable to copy'
  window.getSelection().removeAllRanges()
  return

if $('.clipboard-copy').length > 0
  $(document).ready(ready)
  $(document).on('page:load', ready)