【发布时间】:2015-10-14 02:37:03
【问题描述】:
我正在尝试在不使用 Flash 的情况下复制到剪贴板,如果浏览器与 javascript 方法不兼容,我计划使用 ZeroClipboard 回退到 Flash。
我有一个按钮的 onClick 侦听器,如下所示:
$(buttonWhereActionWillBeTriggered).click(function(){
var copyDiv = document.getElementById(inputContainingTextToBeCopied);
copyDiv.focus();
document.execCommand('SelectAll');
document.execCommand("Copy", false, null);
}
和一个输入字段如下:
<input type="text" name="Element To Be Copied" id="inputContainingTextToBeCopied" value="foo"/>
这目前按预期工作,但设计要求包含要复制的文本的字段是不可见的。我已经尝试过设置type="hidden" 和style="display: none" 都没有成功。两者都会导致按钮选择整个页面并将整个内容复制到用户的剪贴板。
我相对确信原因不是基于浏览器的,但以防万一,我正在 Mac OS X 10.10.4 上的 Chrome(版本 43.0.2357.134(64 位))上进行测试。
有没有一种方法可以在隐藏 的同时保持其可见性?或者如果不是我可以采取的替代路线?
我知道类似的问题,但没有一个能解决我的问题,要么是太旧,要么没有真正使用 Javascript,要么不适合特定的场景。 Here's a good answer 对于任何有类似但不太具体的问题的人。
【问题讨论】:
-
你试过 opacity: 0 吗?
-
@DavidDomain 我刚刚尝试过,它可以工作,太棒了,谢谢!但不幸的是,它仍然会留下透明 div 并移动设计,如果没有更好的解决方案,我会继续这样做并将输入字段设置为 1px x 1px。如果你想回答我会很乐意接受,如果没有更好的出现。再次感谢!
-
如果你使用 jQuery 来 show() 输入,然后调用 copy,然后立即再次 hide() 呢?
-
@pokkanome 我采取了与此非常相似的路线,我会尽快发布答案,谢谢!
-
我使用 style="position: absolute; top: -999px; left: -999px"
标签: javascript jquery html clipboard