Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.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_Angular_Typescript - Fatal编程技术网

Javascript 鼠标右键-激活输入文件中的粘贴选项

Javascript 鼠标右键-激活输入文件中的粘贴选项,javascript,angular,typescript,Javascript,Angular,Typescript,我用angular开发了一个文件输入。在此输入中,我可以使用CTRL-V检测图像粘贴。当我单击输入上的右键时,是否有方法激活粘贴选项 有人能帮我吗 代码 @HostListener("paste", ["$event"]) onPaste(e: ClipboardEvent) { let clipboardData = e.clipboardData || (window as any).clipboardData; let pastedData = clipboardD

我用angular开发了一个文件输入。在此输入中,我可以使用CTRL-V检测图像粘贴。当我单击输入上的右键时,是否有方法激活粘贴选项

有人能帮我吗

代码

@HostListener("paste", ["$event"])

  onPaste(e: ClipboardEvent) {
    let clipboardData = e.clipboardData || (window as any).clipboardData;
    let pastedData = clipboardData.getData("text");
    if (pastedData.includes("data:image")) {
      var binary = atob(pastedData.split(",")[1]);
      var array = [];
      for (var i = 0; i < binary.length; i++) {
        array.push(binary.charCodeAt(i));
      }
      var pasteImages = new Blob([new Uint8Array(array)], {
        type: "image/jpeg"
      });
    } else {
      alert("Select an image in the correct format");
    }
  }
@HostListener(“粘贴”、[“$event”])
onPaste(e:ClipboardEvent){
让clipboardData=e.clipboardData | |(窗口如有);
让pastedData=clipboardData.getData(“文本”);
if(pastedData.includes(“数据:图像”)){
var binary=atob(pastedData.split(“,”[1]);
var数组=[];
对于(var i=0;i
您可以尝试将其添加到粘贴
主机侦听器下:

@HostListener("mousedown", ["$event"])
onMouseDown(e) {
  if (e.button === 2) {
    e.target.contentEditable = true;
  }
  // wait just enough for 'contextmenu' to fire
  setTimeout(() => (e.target.contentEditable = false), 20);
}
输入中删除
type=file
将允许上下文菜单显示:

<input type="file" id="files" multiple (change)="detectFiles($event)" accept="image/*">

您可以尝试将其添加到粘贴
主机侦听器下:

@HostListener("mousedown", ["$event"])
onMouseDown(e) {
  if (e.button === 2) {
    e.target.contentEditable = true;
  }
  // wait just enough for 'contextmenu' to fire
  setTimeout(() => (e.target.contentEditable = false), 20);
}
然后从
input
中删除
type=file
将允许上下文菜单显示:

<input type="file" id="files" multiple (change)="detectFiles($event)" accept="image/*">


事实上,如果删除type=“files”,将出现粘贴按钮,但输入将停止正常工作。有没有办法让它们同时启动和运行?非常感谢你的邀请reply@mvpSets糟糕,今天早上我给你做了一个带有自定义上下文菜单实现的stackblitz,但忘了保存它。。。如果你感兴趣的话,我今晚再做一次是的,我会很感激的!!!此时,我需要一个文件输入,允许我选择/拖动/粘贴图像。您不需要显示图像,只需运行事件,这将是一个巨大的帮助!非常感谢您的可用性和愿意帮助我!我一直在寻找我是否能解决这个问题,我想实现什么是可能的,或者我必须使用几个过程?嘿@mvpSets很抱歉,我一直在研究你的问题,似乎主要的问题不是上下文菜单,而是从Angular访问剪贴板数据。在某些浏览器上看起来非常复杂/不可能。无法在其中分配那么多时间,但我的研究并没有真正取得成果。事实上,如果删除type=“files”,将出现粘贴按钮,但输入将停止正常工作。有没有办法让它们同时启动和运行?非常感谢你的邀请reply@mvpSets糟糕,今天早上我给你做了一个带有自定义上下文菜单实现的stackblitz,但忘了保存它。。。如果你感兴趣的话,我今晚再做一次是的,我会很感激的!!!此时,我需要一个文件输入,允许我选择/拖动/粘贴图像。您不需要显示图像,只需运行事件,这将是一个巨大的帮助!非常感谢您的可用性和愿意帮助我!我一直在寻找我是否能解决这个问题,我想实现什么是可能的,或者我必须使用几个过程?嘿@mvpSets很抱歉,我一直在研究你的问题,似乎主要的问题不是上下文菜单,而是从Angular访问剪贴板数据。在某些浏览器上看起来非常复杂/不可能。我无法在这方面分配那么多时间,但我的研究并没有真正取得成果。