开发者问题收集

在 JS 中复制到剪贴板

2017-08-24
535

我正在使用 document.execCommand("copy") 函数从 JavaScript 代码中复制一段文本。它在 Firefox、Chrome 和 IE 上工作正常。但它在 Safari 上不起作用。我做了很多研究来解决这个问题,但没有得到任何结果。

1个回答

我搜索了一些解决方案,并找到了一个真正有效的解决方案: http://www.seabreezecomputers.com/tips/copy2clipboard.htm

基本上,示例可能类似于:

var $input = $(' some input/textarea ');
$input.val(result);
if (navigator.userAgent.match(/ipad|ipod|iphone/i)) {
  var el = $input.get(0);
  var editable = el.contentEditable;
  var readOnly = el.readOnly;
  el.contentEditable = true;
  el.readOnly = false;
  var range = document.createRange();
  range.selectNodeContents(el);
  var sel = window.getSelection();
  sel.removeAllRanges();
  sel.addRange(range);
  el.setSelectionRange(0, 999999);
  el.contentEditable = editable;
  el.readOnly = readOnly;
} else {
  $input.select();
}
document.execCommand('copy');
$input.blur();
Mohhamad Hasham
2017-08-24