使用JavaScript从剪贴板粘贴图像
如何使用javascript将剪贴板中的图像粘贴到自定义富文本编辑器中?(ctrl+c和ctrl+v或快照) 有人使用过Ajax的富文本编辑器吗?将图像从剪贴板粘贴到Ajax RTE有效吗 请分享你的想法 谢谢 现在我找到了答案 但它只能从剪贴板中检索文本格式或URL。使用JavaScript从剪贴板粘贴图像,javascript,clipboard,copy-paste,Javascript,Clipboard,Copy Paste,如何使用javascript将剪贴板中的图像粘贴到自定义富文本编辑器中?(ctrl+c和ctrl+v或快照) 有人使用过Ajax的富文本编辑器吗?将图像从剪贴板粘贴到Ajax RTE有效吗 请分享你的想法 谢谢 现在我找到了答案 但它只能从剪贴板中检索文本格式或URL。 clipboardData仅适用于IE,它与字符串一起工作,如果粘贴图像,则返回null 一个测试示例 <form> <input type="text" id="context" onClick=
clipboardData
仅适用于IE,它与字符串一起工作,如果粘贴图像,则返回null
一个测试示例
<form>
<input type="text" id="context" onClick="paste();">
</form>
<script type="text/javascript">
function paste() {
var sRetrieveData = clipboardData.getData("Text");
document.getElementById('context').value = sRetrieveData;
}
</script>
函数粘贴(){
var sRetrieveData=clipboardData.getData(“文本”);
document.getElementById('context')。value=sRetrieveData;
}
默认情况下,firefox上未启用剪贴板访问,请参阅解释。
另一方面,只处理文本值,不符合Firefox
正如其他人所说,IE上的代码存在安全风险,任何网站都可以访问你的剪贴板文本
复制图像相对URL的最简单方法是使用java小程序、windows activeX插件或拖放它。不幸的是,无法将图像从剪贴板粘贴到RTE 如果从桌面应用程序(如Microsoft Word)复制包含图像和一些文本的blob,图像将显示为断开的引用(尽管比例正确),文本将正确粘贴(格式将丢失)
唯一可行的方法是在RTE中复制图像并粘贴回RTE。像Firefox 4这样的新浏览器支持将图像数据从剪贴板粘贴到RTE中。但是,大多数web应用程序错误地解析这些数据URI并将其丢弃。雅虎邮件处理得当。然而,Gmail和Hotmail放弃了它。我已经就此通知了谷歌和微软。因为这个问题仍然经常出现在谷歌的搜索结果中,我想指出这在今天是可能的,至少在谷歌浏览器(2011)和所有现代浏览器(2018)中是可能的。他们实现了在GMail中使用,但它适用于所有网站
这在Chrome和Firefox中绝对是可能的。我对IE/Safari不太确定 查看imgur.com、onpaste和pasteboard.co作为示例,并查看
对于记录,您需要用户在元素上按Ctrl+V,然后您可以通过读取
event.clipboardData
在粘贴事件处理程序中捕获数据,但要使其向下工作,您需要确保焦点位于空的contenteditable元素上,并从该元素中提取结果,这在Firefox22中不起作用。请参见为了帮助他人,我将在这里留下尼克·拉塔拉克的答案链接
// window.addEventListener('paste', ... or
document.onpaste = 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);
}
}
}
是否可以使用javascript从剪贴板数据中检索图像?您不能。老实说,我还没有测试过“本机安全禁用”设置,但就我所搜索的而言,没有办法做到这一点。你可以在gmail中完成,因此这是可能的。AJAX通常被认为是一种技术。。。一个真正的web开发组织真的把自己命名为AJAX了吗?他们只是自找麻烦。好吧,考虑到AJAX这个名字是从一个神话中的希腊战士那里盗取的(不管他们声称它是什么的缩写),盗取的另一层是什么?现在在其他浏览器中是可能的。我使用的是FF17,可以使用imgur.com的剪贴板粘贴functionality@Mr5o1这对我来说非常有效你应该把它作为自己的answer@AlexS似乎不太可能,也许OP可以将其添加到此anser中。
url.createObjectURL
以某种方式仅创建在该会话中工作的url,但不用于存储在数据库中FileReader()
对于base64映像非常有效。您可以使用XMLHttpRequest
将blob完全存储在数据库中,而无需使用任何FileReader
。您还可以以相同的方式将任何URI(包括URL)存储在数据库中,使用数据方案存储URI实际上会存储资源本身(因为数据URI就是这样工作的)。您试图描述的是,通过调用URL.createObjectURL
获得的URL将仅在特定的“会话”(取决于用户代理)内工作,从而使其在该会话之外变得毫无意义,例如,在发出在数据库中存储某些资源的请求时。