将文本复制到剪贴板的最佳方法是什么?(多浏览器)
我试过了:
function copyToClipboard(text) {
if (window.clipboardData) { // Internet Explorer
window.clipboardData.setData("Text", text);
} else {
unsafeWindow.netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
const clipboardHelper = Components.classes["@mozilla.org/widget/clipboardhelper;1"].getService(Components.interfaces.nsIClipboardHelper);
clipboardHelper.copyString(text);
}
}
Run Code Online (Sandbox Code Playgroud)
但在Internet Explorer中,它会出现语法错误.在Firefox中,它说unsafeWindow is not defined
.
没有闪存的好技巧:Trello如何访问用户的剪贴板?
在Internet Explorer中,我可以使用clipboardData对象来访问剪贴板.我怎样才能在FireFox,Safari和/或Chrome中执行此操作?
我需要帮助使用JavaScript将富文本复制到剪贴板.我四处搜寻,但没有找到适合我特定需求的东西.
function ctrlA1(corp) {
with(corp) {}
if (document.all) {
txt = corp.createTextRange()
txt.execCommand("Copy")
} else
setTimeout("window.status=''", 5000)
}
Run Code Online (Sandbox Code Playgroud)
<div id="sc1">hello <br> <b> world </b> </div>
<button onclick="ctrlA1(document.getElementById('sc1') )"></button>
Run Code Online (Sandbox Code Playgroud)
上述代码不起作用,导致了object expected error
.任何帮助表示赞赏!我在那里看过一个叫做库的库zeroclipboard
,但我更喜欢编写自己的函数.
我现在有这个功能来选择页面上的文字.是否可以编写一个公式来按原样复制所选范围?
function containerSelect(id) {
containerUnselect();
if (document.selection) {
var range = document.body.createTextRange();
range.moveToElementText(id);
range.select();
} else if (window.getSelection) {
var range = document.createRange();
range.selectNode(id);
window.getSelection().addRange(range);
}
}
Run Code Online (Sandbox Code Playgroud)
<label onclick="containerSelect(this); select_all()">
<p>hello world</p>
<img src="imagepath.png">
</label>
Run Code Online (Sandbox Code Playgroud)
我需要使用JavaScript/jquery将图像复制到剪贴板,我使用以下js来实现它.
function copyImageToClipBoard() {
var div = document.getElementById('chart1');
div.contentEditable = true;
var controlRange;
if (document.body.createControlRange) {
controlRange = document.body.createControlRange();
controlRange.addElement(div);
controlRange.execCommand('Copy');
}
div.contentEditable = false;
}
Run Code Online (Sandbox Code Playgroud)
它在IE中本地工作正常.但是当我试图从其他IE机器上测试它时,要将图像粘贴到MS字中,我需要使用Paste Special-> Device Independent Bitmap选项,否则我看不到粘贴的图像.
我想知道它是否与m/c的环境有关.如果是这样,还有其他任何选择吗?
是否可以在javascript中将图像复制到剪贴板?我知道如何复制文字,但你可以复制图像吗?
这是一个安全限制吗?
我注意到document.execCommand('copy')
命令在后台运行时会在大约 5 秒后超时。有没有办法绕过这个限制,或者如果需要更长的时间,也许可以回退?
这是我一直用于剪贴板文档的页面。例如,我有一个“准备”数据的函数(从表格数据生成 html),然后是第二个函数将它复制到带有一些附加标记的剪贴板。在大表上,从用户按下 Cmd-C 到生成 html 并能够复制它,这通常可能需要十秒钟。
此外,我注意到 Google Sheets 允许超过五秒的复制操作,所以我很好奇他们会怎么做:
# still works after 25 seconds!
[Violation] 'copy' handler took 25257ms 2217559571-waffle_js_prod_core.js:337
Run Code Online (Sandbox Code Playgroud)
代码被缩小/混淆,因此很难阅读,但这里是上面的文件:https : //docs.google.com/static/spreadsheets2/client/js/2217559571-waffle_js_prod_core.js。
作为参考,正在复制的数据量约为 50MB。请在复制操作上使用约 10 秒的延迟来模拟这个长时间运行的过程。
对于赏金,我希望有人可以展示一个执行单个 Cmd-C 的工作示例:
它必须生成 html 并且必须只涉及单个 Cmd-C(即使我们使用 apreventDefault
并在后台触发复制事件。
您可以使用以下内容作为“html-generation”功能应该如何工作的模板:
function sleepFor( sleepDuration ){
var now = new Date().getTime();
while(new Date().getTime() < now + sleepDuration){ /* do nothing */ }
}
// note: the data …
Run Code Online (Sandbox Code Playgroud) 我在 stackoverflow 中尝试了很多解决方案,但它不起作用。(这里和这里)
我在网站中尝试并使用chrome 扩展来运行代码(chrome 59.0.3071.104 64位)
<h4 align="center">text data to copy</h4>
var copy_text = document.getElementsByTagName("h4")[0];
copy_text.select(); //-> error: select is not a function
Run Code Online (Sandbox Code Playgroud)
和
var range = document.createRange();
range.selectNode(copy_text);
window.getSelection().addRange(range);
document.execCommand("copy"); //-> clipboard not change
Run Code Online (Sandbox Code Playgroud)
有什么解决办法吗?谢谢。
编辑:我认为我的问题是页面加载(安全浏览器),所有解决方案都与用户交互一起使用