如何在弹出框中显示剪贴板复制文本?原代码报错求助
解决方法:弹窗显示复制到剪贴板的文本
这问题我太熟悉啦!你看到的[object Object]是因为$temp是一个jQuery包装后的DOM对象,不是字符串,直接alert对象的话,JS就会输出它默认的对象描述文本。要弹出复制的内容,你得拿到这个临时输入框里的实际文本值才行。
方案一:先存好要复制的文本(更清晰)
把要复制的文本提前存到变量里,之后既可以用来设置临时输入框的值,也能直接拿来弹窗:
function copyToClipboard(element) { // 先获取并存储目标元素的文本 var copiedText = $(element).text(); var $temp = $("<input>"); $("body").append($temp); $temp.val(copiedText).select(); document.execCommand("copy"); $temp.remove(); // 弹窗显示复制的文本 alert(copiedText); }
方案二:直接获取临时输入框的值
如果你不想额外声明变量,也可以在设置完输入框值后,用$temp.val()拿到文本再弹窗:
function copyToClipboard(element) { var $temp = $("<input>"); $("body").append($temp); $temp.val($(element).text()).select(); // 直接获取临时输入框的文本值弹窗 alert($temp.val()); document.execCommand("copy"); $temp.remove(); }
为什么之前的写法不行?
$("<input>")创建出来的是jQuery对象,它本质上是包裹了DOM元素的集合。当你直接alert这个对象时,JavaScript会自动把它转换为字符串,而对象默认的字符串表示就是[object Object]。只有通过.val()方法,才能提取出输入框里的实际文本内容,也就是你要复制的那段文字。
内容的提问来源于stack exchange,提问作者user2239972
相关产品推荐
相关产品推荐

