如何在div
不使用 Flash 的情况下仅使用 JavaScript/jQuery 将(或任何元素)的内容复制到剪贴板?
例如,如果我有以下代码:
<p id="mi_parrafo">
Texto que quiero copiar
</p>
<button>Copiar al portapapeles</button>
我应该怎么做,按下按钮后,当我按下Ctr+时V,内容会粘贴在标记为的标签内#mi_parrafo
?
如何在div
不使用 Flash 的情况下仅使用 JavaScript/jQuery 将(或任何元素)的内容复制到剪贴板?
例如,如果我有以下代码:
<p id="mi_parrafo">
Texto que quiero copiar
</p>
<button>Copiar al portapapeles</button>
我应该怎么做,按下按钮后,当我按下Ctr+时V,内容会粘贴在标记为的标签内#mi_parrafo
?
至少有一种方法可以在不使用 Flash 的情况下实现这一点:使用
copy
. 此命令会将执行时在页面上选择的文本复制到剪贴板。所以你可以创建一个小函数:
document.execCommand("copy")
。然后所选项目的内容将在剪贴板上。代码将是这样的:
此解决方案的主要问题是并非所有浏览器都支持此命令,尽管它可以在以下主要浏览器中使用:
代码的工作演示:
也可以使用 jQuery 创建等效版本:
它的工作原理与上面的示例类似,尽管在 Safari for Mac 和 Chrome 64 位中报告了一些错误(有关更多详细信息,请参阅原始源链接中的评论)。
资料来源:StackOverflow 网站上的原始答案。
扩展:复制保留样式
在另一个关于 StackOverflow 的西班牙语问题中,一位用户评论说文本的格式/样式没有被复制。这是因为在上面的代码中它用于
input text
复制元素的内容,因此 HTML 代码是“丢失”的(它被解释为字面意思而不是 HTML)。如果input
我们不使用div
可编辑的,则格式不会丢失,并且可以使用样式复制/粘贴:为了补充您可以查看clipboard.js库,正如@Alvaro 提到的那样,它使用了execCommand所以根据库页面它说它适用于 Chrome 42+、Firefox 41+、IE 9+ 和 Opera 29 +。
它不适用于 Safari,但是当您在 iPad 上尝试时,它会从中选择文本,
input
同时向您显示复制它的本机选项。不同之处在于易用性,因为您只需花费很少的时间和精力就可以复制您想要的内容,以下代码复制 a 的内容
input
,但您也可以复制/剪切另一个元素(按钮、div 等)的内容. ).它将与上面的其他人相同,但不是输入文本区域,因此如果您有不止一行,缩进会尊重您
您好,我想知道是否可以封装想要复制的内容。