将文本复制到剪贴板的最佳方法是什么?(多浏览器)
我试过了:
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中执行此操作?
我找到了许多复制到剪贴板的解决方案,但它们都可以使用闪存或网站方面.我正在寻找方法复制到剪贴板自动,没有闪存和用户方面,它是用户脚本,当然是跨浏览器.
我正在使用此功能将URL复制到剪贴板:
function CopyUrl($this){
var querySelector = $this.next().attr("id");
var emailLink = document.querySelector("#"+querySelector);
var range = document.createRange();
range.selectNode(emailLink);
window.getSelection().addRange(range);
try {
// Now that we've selected the anchor text, execute the copy command
var successful = document.execCommand('copy', false, null);
var msg = successful ? 'successful' : 'unsuccessful';
if(true){
$this.addClass("copied").html("Copied");
}
} catch(err) {
console.log('Oops, unable to copy');
}
// Remove the selections - NOTE: Should use
// removeRange(range) when it is supported
window.getSelection().removeAllRanges();
}
Run Code Online (Sandbox Code Playgroud)
在桌面浏览器上一切正常,但在我的函数成功返回的iOS设备上没有,但数据根本没有复制到剪贴板.造成这种情况的原因是什么?如何解决这个问题?
随着闪存在许多环境(iPhone,Android,IE10等)的出路上,有没有任何新的解决方案即将在没有安装闪存的情况下安全地将信息复制到剪贴板?
到目前为止我一直在使用ZeroClipboard,但是我担心更多没有闪存的观众,这个功能会被破坏,我希望尽可能不依赖于Flash.
我目前正在做一个项目,我需要阻止用户拍摄任何网页的快照,为此他可以使用任何普通键盘中的"Print Scrn"/"Printscreen"键.
我一直试图找到它的解决方案,但是徒劳无功.如果可能的话,我需要考虑Firefox浏览器的" Screengrab "插件,也可以将其停止.
非常感谢任何帮助,我正在为我的项目使用PHP(作为服务器端语言)和jQuery.
在此之前被标记为重复之前,我希望您意识到没有人真正为这个特定问题提供了一个好的答案.在焦点/点击时选择contenteditable div中的所有文本,接受的答案和Tim Down的答案都没有帮助,因为它们仅在元素已经聚焦时才起作用.在我的情况下,我希望在单击按钮后选择contenteditable div中的所有文本,即使div未事先聚焦.
我怎么能这样做?
我试图在不使用Flash的情况下复制到剪贴板,如果浏览器与javascript方法不兼容,我计划使用ZeroClipboard重新使用Flash .
我有一个按钮的onClick监听器,看起来像:
$(buttonWhereActionWillBeTriggered).click(function(){
var copyDiv = document.getElementById(inputContainingTextToBeCopied);
copyDiv.focus();
document.execCommand('SelectAll');
document.execCommand("Copy", false, null);
}
Run Code Online (Sandbox Code Playgroud)
和输入字段如下:
<input type="text" name="Element To Be Copied" id="inputContainingTextToBeCopied" value="foo"/>
Run Code Online (Sandbox Code Playgroud)
这当前按预期工作,但设计要求包含要复制的文本的字段是不可见的.我尝试了两种设置type="hidden",style="display: none"但都没有成功.两者都导致按钮选择整个页面并将整个内容复制到用户的剪贴板.
我相对确信原因不是基于浏览器而只是因为我在Mac OS X 10.10.4上测试Chrome(版本43.0.2357.134(64位)).
有没有一种方法可以保持<input>在隐藏时可见的功能?或者如果不是我可以采取的替代路线?
我知道类似的问题,没有一个能解决我的问题,要么是因为太老了,要么实际上没有使用Javascript或者不适合特定的场景.对于任何有类似,不太具体的问题的人来说,这是一个很好的答案.
看起来,您不能(还)以编程方式从JavaScript Web应用程序将图像复制到剪贴板?
我试图在剪贴板中复制文本,但它确实有效.
现在我想复制一个图像,然后按ctrl+ v粘贴到Word或Excel或Paint.
$(function() {
$("#btnSave").click(function() {
html2canvas($("#container1"), {
onrendered: function(canvas) {
theCanvas = canvas;
document.body.appendChild(canvas);
Canvas2Image.saveAsPNG(canvas);
$("#img-out").append(canvas);
}
});
});
});
Run Code Online (Sandbox Code Playgroud) javascript ×9
clipboard ×8
jquery ×5
html ×3
copy-paste ×2
browser ×1
copy ×1
dom ×1
html5 ×1
ios ×1