【问题标题】:Web "Copy to Clipboard" without triggering mobile keyboards网页“复制到剪贴板”不触发移动键盘
【发布时间】:2019-01-28 05:24:59
【问题描述】:

此 JavaScript 将预期文本复制到桌面和移动浏览器上用户的剪贴板。但是在移动浏览器上,它会触发手机的键盘弹出。

它通过从 HTML 输入中获取字符串并由 HTML 按钮启动。

在这里我输入并定义值和ID。

<input type="text" value="THIS GETS COPIED" id="CopyThis">

ID 被传递给将其复制到剪贴板的函数。

function copy() {
var copyText = document.getElementById("CopyThis");
copyText.select();
document.execCommand("copy");
}

此 HTML 按钮启动该功能。

<button onclick="copy();">

是否有其他方法可以将文本字符串复制到剪贴板,而不会在移动浏览器上触发手机键盘?

【问题讨论】:

    标签: javascript android html ios


    【解决方案1】:

    您可以指定输入字段为只读:

    <input type="text" value="THIS GETS COPIED" id="CopyThis" readonly>
    

    这会阻止手机键盘触发

    【讨论】:

      【解决方案2】:

      复制完数据后隐藏该字段。

      function copy() {
      var copyText = document.getElementById("CopyThis");
      copyText.select();
      document.execCommand("copy");
      
      setTimeout(function() {
              copyText.setAttribute('style', 'display:none;');
          }, 50);
      }
      

      【讨论】:

      • 这对我来说真的很有用。我有一个要复制一些详细信息的页面,而 navigator.clipboard.writeText 在移动设备或 chromeOS 上不起作用。我不想要一个随机的 textarea 让页面变得丑陋只是为了选择和复制,所以我默认在 dom 元素上使用 display:none ,然后 js 将其更改为 display:inline,选择和复制,然后切换它返回显示:无。它发生得如此之快,用户永远看不到文本区域。
      猜你喜欢
      • 2012-07-15
      • 2015-10-06
      • 2010-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-07
      • 2014-02-21
      相关资源
      最近更新 更多