javascript - mozilla firefox中复制到剪贴板纯javascript函数

标签 javascript html firefox

我需要制作一个可以在每个页面和浏览器上运行的按钮,可以从文本区域复制输入。我正在尝试使用以下函数来做到这一点:

 selectElementContents: function(){
      el = document.getElementById("tag_text");

      var range = document.createRange();
      range.selectNode(el);
      window.getSelection().removeAllRanges();
      window.getSelection().addRange(range);

      try {
        var successful = document.execCommand('copy');
      } catch(err) {
        console.log('Oops, unable to copy');
      }

目前,该功能在除 Firefox 和 Safari 之外的所有浏览器上运行良好。我读了一些关于 Safari 的文章,似乎它不支持这样的功能,还是我弄错了?但是,当我尝试使用 document.execCommand('copy') 复制输入内容时,它会抛出以下错误: [Exception... "Failure" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: debugger eval code :: <TOP_LEVEL> :: line 1" data: no] 。我查了一下这个错误,它是一种通用错误,因为代码中出现了不止一种错误。

最后我的问题是如何让它在 Firefox 上运行以及出了什么问题?

最佳答案

遗憾的是,并非所有地方都支持 execCommand('copy')。它也不是很安全,因为它会将内容放入剪贴板而不提醒用户。

无论如何,您都可以将 execCommand('copy') 与此 answer 中提供的解决方案结合起来。对于像这样不受支持的浏览器:

HTML:

<form id="test_form">
  <p>Copy this:</p>
  <input id="tag_text" type="text" size="40" />
  <input type="button" onClick="select_element_contents()" value="Copy" />
</form>

Javascript:

function select_element_contents (){
    var el = document.getElementById("tag_text");
    var el_text = el.value;

    var range = document.createRange();
    range.selectNode(el);
    window.getSelection().removeAllRanges();
    window.getSelection().addRange(range);

    try {
        var successful = document.execCommand('copy');
    } catch(err) {
        window.prompt("Copy to clipboard: Ctrl+C/Cmd+C, Enter", el_text);
    }
}

当然,这并不理想,但由于 Mozilla Firefox 不支持自动复制到剪贴板,因此用户必须按下按钮。最好让它尽可能透明。

关于javascript - mozilla firefox中复制到剪贴板纯javascript函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34067806/

相关文章:

javascript - 当我尝试移动 span 时,appendChild 不起作用

javascript - 我可以编写 chrome 扩展来在页面加载时更改页面或网站的 CSS 吗?

php - 在 X-Editable 中通过 Ajax 提交数据

html - 居中 <img/> + <a/> 在 IE7 中表格内自动溢出

javascript - gRaphael:无法访问多篇论文

php - Uploadify 只上传小文件

javascript - 如何从矩阵中提取子矩阵?

http - 为什么现在只有 index.php 存在时 Firefox 继续显示 index.htm?

java - Webdriver firefox-bin 使用过多的 CPU

Firefox、SVG、文本装饰