Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JavaScript从剪贴板粘贴图像_Javascript_Clipboard_Copy Paste - Fatal编程技术网

使用JavaScript从剪贴板粘贴图像

使用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="p

如何使用javascript将剪贴板中的图像粘贴到自定义富文本编辑器中?ctrl+c和ctrl+v或快照

有人使用过Ajax的富文本编辑器吗?将图像从剪贴板粘贴到Ajax RTE有效吗

请分享你的想法

谢谢

现在我找到了答案

但它只能从剪贴板中检索文本格式或URL。 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>
默认情况下,firefox上未启用剪贴板访问,请参阅解释。 另一方面,只处理文本值,不符合Firefox

正如其他人所说,IE上的代码存在安全风险,任何网站都可以访问你的剪贴板文本


复制图像相对URL的最简单方法是使用java小程序、windows activeX插件或拖放它。

不幸的是,无法将图像从剪贴板粘贴到RTE

如果从桌面应用程序(如Microsoft Word)复制包含图像和一些文本的blob,则图像将显示为断开的引用,尽管比例正确,文本粘贴正确,格式将丢失


唯一可行的方法是在RTE中复制图像并粘贴回RTE。

像Firefox 4这样的新浏览器支持将图像数据从剪贴板粘贴到RTE中。但是,大多数web应用程序错误地解析这些数据URI并将其丢弃。雅虎邮件处理得当。然而,Gmail和Hotmail放弃了它。我已经就此通知了谷歌和微软。

因为这个问题仍然经常出现在谷歌的搜索结果中,我想指出这在今天是可能的,至少在谷歌Chrome 2011的所有现代浏览器中是可能的。他们实现了在GMail中使用,但它适用于所有网站


这在Chrome和Firefox中是绝对可能的。我对IE/Safari不太确定

查看imgur.com、onpaste和pasteboard.co作为示例,并查看


对于记录,您需要用户在元素上按Ctrl+V,然后您可以通过读取event.clipboardData在粘贴事件处理程序中捕获数据,但要使其在底层工作,您需要确保焦点位于空的contenteditable元素上,并从中提取结果,这在Firefox 22中不起作用。请参见

为了帮助他人,我将在这里留下尼克·拉塔拉克的答案链接

// 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。您还可以以相同的方式在数据库中存储包含URL的任何URI,并且使用数据方案存储URI实际上将存储资源本身,因为数据URI就是这样工作的。您试图描述的是,通过调用URL.createObjectURL获得的URL将仅在特定会话中工作,具体取决于用户代理,这使得它在该会话之外毫无意义,例如,当发出在数据库中存储某些资源的请求时。