Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.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=

如何使用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>

函数粘贴(){
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将仅在特定的“会话”(取决于用户代理)内工作,从而使其在该会话之外变得毫无意义,例如,在发出在数据库中存储某些资源的请求时。