繁体   English   中英

ClipboardEvent 在 IE11 中未定义

[英]ClipboardEvent undefined in IE11

我的 Angular 指令之一中有以下代码:

  @HostListener('paste', ['$event'])
  onPaste($event: ClipboardEvent) {
    setTimeout(() => {
      const input = (<HTMLInputElement>$event.target);
      input.value = input.value.replace(/\D/g, '');
    });
  }

它在 IE11 中失败,并显示ClipboardEvent is undefined错误。 幸运的是,我可以将它输入到Event ,但我想知道它为什么会中断 - 有没有我可以在 angular-cli.json 中添加的库以使其与ClipboardEvent

"lib": [
  "es2017",
  "dom"
],

“dom”是Event来源......

这似乎是 IE 中带有 angulars JIT(即时编译)构建模式的问题。 它有助于使用 AOT(Ahead-Of-Time)。 然后加载站点没有错误。

ng build --aot

JIT 使浏览器在运行时编译代码,而 IE 似乎无法正确编译(这是猜测!)。
下面是 AOT 和 JIT 区别的解释: https : //angular.io/guide/aot-compiler

注意:
但是,从剪贴板粘贴在 IE 中仍然不起作用。 这里很好地解释了为什么它不能在任何地方工作: 剪贴板事件(堆栈溢出)

像这样使用

@HostListener('paste', ['$event'])
  onPaste($event) {
    var clipboardData; 
    if (window['clipboardData']) { // IE 
       clipboardData = window['clipboardData']; 
    } else if ($event.originalEvent.clipboardData && $event.originalEvent.clipboardData.getData) { // other browsers 
       clipboardData = $event.originalEvent.clipboardData; }
    }}

剪贴板事件仍处于实验技术之下。 这将起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM