Javascript 艾博德释放 this.on_keyboardup_action=函数(事件){ k=事件.keyCode; //控制键 if(k==17 | | | | | | | | | event.ctrlKey | | event.key=='Meta') ctrl_pressed=false; }; //画图 this.paste_createImage=函数(源){ var pastedImage=新图像(); pastedImage.onload=函数(){ 如果(自动调整大小==true){ //调整画布大小 canvas.width=pastedImage.width; canvas.height=粘贴dimage.height; } 否则{ //透明帆布 clearRect(0,0,canvas.width,canvas.height); } ctx.drawImage(粘贴图像,0,0); }; pastedImage.src=源; }; }
Safari没有实现DataTransfer.items,因此无法 在中提取图像数据(即复制到剪贴板的屏幕截图) Javascript。您可以获取复制的文件,但不能获取数据Javascript 艾博德释放 this.on_keyboardup_action=函数(事件){ k=事件.keyCode; //控制键 if(k==17 | | | | | | | | | event.ctrlKey | | event.key=='Meta') ctrl_pressed=false; }; //画图 this.paste_createImage=函数(源){ var pastedImage=新图像(); pastedImage.onload=函数(){ 如果(自动调整大小==true){ //调整画布大小 canvas.width=pastedImage.width; canvas.height=粘贴dimage.height; } 否则{ //透明帆布 clearRect(0,0,canvas.width,canvas.height); } ctx.drawImage(粘贴图像,0,0); }; pastedImage.src=源; }; },javascript,jquery,html,clipboarddata,Javascript,Jquery,Html,Clipboarddata,Safari没有实现DataTransfer.items,因此无法 在中提取图像数据(即复制到剪贴板的屏幕截图) Javascript。您可以获取复制的文件,但不能获取数据 [来自stakeoverflow post]您是否注意到,您在结尾处遗漏了一个分号?如果您使用divs id,您的代码可以工作。请添加工作小提琴或代码笔。该代码仅适用于打印屏幕,桌面图像不适用于组合版本,使用@pareshm for Chrome的代码和我的Firefox代码可以在这个更新的fiddle中找到(通过ctrl+
[来自stakeoverflow post]您是否注意到,您在结尾处遗漏了一个分号?如果您使用divs id,您的代码可以工作。请添加工作小提琴或代码笔。该代码仅适用于打印屏幕,桌面图像不适用于组合版本,使用@pareshm for Chrome的代码和我的Firefox代码可以在这个更新的fiddle中找到(通过ctrl+print和copy image part from gimp通过系统屏幕转储创建剪贴板内容进行测试)取消注释/删除快照()调用第137行以消除未定义的错误,但它将粘贴屏幕截图。我要粘贴从桌面或任何其他计算机位置复制的图像。我的答案的张贴代码有效,请注意,它将引发未定义快照函数的错误原因,您必须添加或删除它的调用以消除错误消息我将调用留在代码中,因为它将是您额外功能的入口点。它不适用于从桌面复制的图像,也无法在firefox中工作。未定义console.log(event.target.result)它只处理打印屏幕它不处理从桌面复制图像并粘贴到画布上…:(它对我来说工作正常。我已经在Firefox中通过从Desctop复制和粘贴对它进行了测试。你的Firefox版本是什么?@MayurPatel:它只在Firefox中工作,但在Chrome浏览器上不工作。从桌面复制和粘贴你可以在Chrome上尝试一下吗?…不,我正在工作,但仍然没有得到在Chrome中工作的确切解决方案。可能是google Chrome没有允许它从桌面的剪贴板数据中粘贴。但永远不要放弃!!:)如果我得到解决方案,当我在firefox中选中var items=e.clipboardData.items时,我肯定会让你知道它工作正常,但在我最新的chrome浏览器中,chrome items[0]中的相同内容未定义,这将阻止它粘贴
$("#dummy").on("paste",function(event){
var items = (event.clipboardData || event.originalEvent.clipboardData).items;
console.log(JSON.stringify(items)); // will give you the mime types
for (index in items) {
var item = items[index];
if (item.kind === 'file') {
var blob = item.getAsFile();
var reader = new FileReader();
reader.onload = function(event){
console.log(event.target.result)}; // data url!
reader.readAsDataURL(blob);
}
}
})
$("#one").on("paste", function (event) {
var items = (event.clipboardData || event.originalEvent.clipboardData).items;
console.log(JSON.stringify(items)); // will give you the mime types
for (index in items) {
var item = items[index];
if (item.kind === 'file') {
var blob = item.getAsFile();
var reader = new FileReader();
reader.onload = function (event) {
console.log(event.target.result)
}; // data url!
reader.readAsDataURL(blob);
}
}
})
<html>
<head>
<meta charset="utf-8">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<style>
#one {
border: 1px solid black;
min-height: 100px;
min-width: 100px;
}
</style>
</head>
<body>
Copy image from clipboard in Firefox.
<br /> Select the box below and paste a image from clipboard via ctrl+v
<br /> Data printed at console
<br />
<div id="one" contenteditable="true"></div>
<script>
$(function () {
$("#one").bind("input paste", function (ev) {
window.setTimeout(function (ev) {
var input = $("#one").children()[0].src;
var s = input.split(',');
var mime = s[0];
var data = s[1];
console.log(mime);
console.log(data);
}, 300);
});
});
</script>
</body>
</html>
<canvas style="border:1px solid grey;" id="my_canvas" width="300" height="300"></canvas>
var CLIPBOARD = new CLIPBOARD_CLASS("my_canvas", true);
/**
* image pasting into canvas
*
* @param string canvas_id canvas id
* @param boolean autoresize if canvas will be resized
*/
function CLIPBOARD_CLASS(canvas_id, autoresize) {
var _self = this;
var canvas = document.getElementById(canvas_id);
var ctx = document.getElementById(canvas_id).getContext("2d");
var ctrl_pressed = false;
var reading_dom = false;
var text_top = 15;
var pasteCatcher;
var paste_mode;
//handlers
document.addEventListener('keydown', function (e) {
_self.on_keyboard_action(e);
}, false); //firefox fix
document.addEventListener('keyup', function (e) {
_self.on_keyboardup_action(e);
}, false); //firefox fix
document.addEventListener('paste', function (e) {
_self.paste_auto(e);
}, false); //official paste handler
//constructor - prepare
this.init = function () {
//if using auto
if (window.Clipboard)
return true;
pasteCatcher = document.createElement("div");
pasteCatcher.setAttribute("id", "paste_ff");
pasteCatcher.setAttribute("contenteditable", "");
pasteCatcher.style.cssText = 'opacity:0;position:fixed;top:0px;left:0px;';
pasteCatcher.style.marginLeft = "-20px";
pasteCatcher.style.width = "10px";
document.body.appendChild(pasteCatcher);
document.getElementById('paste_ff').addEventListener('DOMSubtreeModified', function () {
if (paste_mode == 'auto' || ctrl_pressed == false)
return true;
//if paste handle failed - capture pasted object manually
if (pasteCatcher.children.length == 1) {
if (pasteCatcher.firstElementChild.src != undefined) {
//image
_self.paste_createImage(pasteCatcher.firstElementChild.src);
}
}
//register cleanup after some time.
setTimeout(function () {
pasteCatcher.innerHTML = '';
}, 20);
}, false);
}();
//default paste action
this.paste_auto = function (e) {
paste_mode = '';
pasteCatcher.innerHTML = '';
var plain_text_used = false;
if (e.clipboardData) {
var items = e.clipboardData.items;
if (items) {
paste_mode = 'auto';
//access data directly
for (var i = 0; i < items.length; i++) {
if (items[i].type.indexOf("image") !== -1) {
//image
var blob = items[i].getAsFile();
var URLObj = window.URL || window.webkitURL;
var source = URLObj.createObjectURL(blob);
this.paste_createImage(source);
}
}
e.preventDefault();
}
else {
//wait for DOMSubtreeModified event
//https://bugzilla.mozilla.org/show_bug.cgi?id=891247
}
}
};
//on keyboard press -
this.on_keyboard_action = function (event) {
k = event.keyCode;
//ctrl
if (k == 17 || event.metaKey || event.ctrlKey) {
if (ctrl_pressed == false)
ctrl_pressed = true;
}
//c
if (k == 86) {
if (document.activeElement != undefined && document.activeElement.type == 'text') {
//let user paste into some input
return false;
}
if (ctrl_pressed == true && !window.Clipboard)
pasteCatcher.focus();
}
};
//on kaybord release
this.on_keyboardup_action = function (event) {
k = event.keyCode;
//ctrl
if (k == 17 || event.metaKey || event.ctrlKey || event.key == 'Meta')
ctrl_pressed = false;
};
//draw image
this.paste_createImage = function (source) {
var pastedImage = new Image();
pastedImage.onload = function () {
if(autoresize == true){
//resize canvas
canvas.width = pastedImage.width;
canvas.height = pastedImage.height;
}
else{
//clear canvas
ctx.clearRect(0, 0, canvas.width, canvas.height);
}
ctx.drawImage(pastedImage, 0, 0);
};
pastedImage.src = source;
};
}