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

标签 javascript angular typescript

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

有人可以帮助我吗?

Demo

代码

@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 下:

@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/*">

关于javascript - 鼠标右键 - 激活输入文件中的粘贴选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60153150/

相关文章:

typescript - Cypress:commands.ts 下的导入行会导致错误

javascript - 模拟服务工作人员-预期响应解析器返回模拟响应对象,但未定义。将使用原始响应

javascript - 在 MongoDB 和 Mongoose 中将 JSON 文档替换为另一个,而无需事先了解 JSON 文档的属性

javascript - 使用 jquery 对话框在 jstree 中创建一个新节点

javascript - 从 Angular 中的自定义验证器访问服务

javascript - Typescript - 将拆分后的字符串推送到数组

javascript - Gmaps.js 从数组中添加/删除标记

Angular Testing 和 HttpClient : TypeError: Cannot read property 'get' of undefined

javascript - 仅当另一个可观察对象在过去两秒内未发出时才从可观察对象发出

typescript - 如何编写支持 amd 和普通浏览器的 typescript 模块