首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么Angular (5) HostListener事件可以在Chrome中运行,但IE不能?

Angular是一个流行的前端开发框架,它使用TypeScript编写,并且提供了许多方便的功能和工具来简化开发过程。其中一个功能是HostListener装饰器,它允许我们在组件中监听DOM事件。

在Chrome浏览器中,Angular的HostListener事件可以正常运行,而在IE浏览器中可能会出现问题。这是因为不同浏览器对于DOM事件的处理方式有所不同。

IE浏览器在处理DOM事件时使用的是旧的事件模型,而Chrome等现代浏览器使用的是新的事件模型。在旧的事件模型中,事件处理程序是通过attachEvent方法绑定的,而在新的事件模型中,事件处理程序是通过addEventListener方法绑定的。

Angular的HostListener装饰器使用的是新的事件模型,因此在Chrome等现代浏览器中可以正常工作。但是在IE浏览器中,由于使用的是旧的事件模型,无法正确地触发HostListener事件。

为了解决这个问题,我们可以使用polyfills(填充物)来提供对新的事件模型的支持。Polyfills是一种用于在旧的浏览器中模拟新的功能的技术。在Angular中,我们可以使用core-js等库来加载polyfills,以确保HostListener事件在所有浏览器中都能正常工作。

总结起来,Angular的HostListener事件可以在Chrome中运行,但在IE中可能无法正常工作,这是因为不同浏览器对于DOM事件的处理方式不同。为了解决这个问题,我们可以使用polyfills来提供对新的事件模型的支持。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

AngularJS2+调用原有的js脚本(AngularJS脚本跟本地原有脚本之间的关系)

到了Angular2一直到现在的版本5,一点改进没有,还要编译,还要部署,原有的JS脚本也不能用了。”...为什么采用新的语言,而不是沿用当前的ES5,官网和社区已经有了很多解释了,新语言当然有新语言的优势,比如定义变量,可以指定类型,而在程序中用错类型,则会在编译过程中就给出警告,不至于等到上线了才发现BUG...上面是从技术实现上的限制原因,实际上还有一个设计哲学逻辑上的原因: AngularJS设计之初就不是为了单纯的桌面浏览器运行,还希望能够在手机、移动设备甚至其它设备上执行。...当然你可能会说,不不不,我就是浏览器运行,不考虑别的。OK,我也不较劲,你当我没说,你完全可以就这么用。...HostListener 是属性装饰器,用来为宿主元素添加事件监听,这个行为表示html端某个元素的事件,产生到达TS脚本的调用动作。

1.6K60

Angular 的伪事件

尽管 Angular 模版绑定文档中提到了伪事件 pseudo-event,但是在其他地方没有进一步的文档说明。深入之前,我们看看 Angular 的伪事件解决了什么问题。...如下,是一个关于怎么模版声明伪事件的例子: <input (keydown.esc) ='.....<em>在</em> @<em>HostListener</em> 中使用 Pseudo-Events 如同其他 DOM <em>事件</em>,你<em>可以</em>通过 @<em>HostListener</em> 监听伪<em>事件</em>: @<em>HostListener</em>('keydown.control.z...但是,我们可以想象下,如果在伪事件中使用点作为分隔符,它在语法上是不正确的。这就是为什么它被映射为 "dot" 关键字。...尽管符号键存在一些小缺点,但是 Angular事件是一个非常棒的功能,能够满足大多数监听键盘事件的需求。我相信在任何 Angular 应用中使用它可以使实现键盘辅助功能和交互的过程更加简单。

26540
  • AngularDart4.0 高级-属性(Attribute)指令 顶

    “结构指令”页面中了解它们。 属性指令被用作元素的属性。 例如,“模板语法”页面的内置NgStyle指令可以同时更改多个元素样式。 属性指令有两种: 基于类:一个全功能的属性指令,使用类实现。... 现在在AppComponent引用此模板,并将Highlight指令添加到指令列表。 当Angular模板遇到myHighlight时,就会识别该指令。...Angular检测到你正试图绑定到某个东西,但是它找不到这个指令。 您可以通过directives列表列出HighlightDirective让Angular知道。...添加两个事件处理程序,当鼠标进入或离开时进行响应,每个都由HostListener注解装饰。... 您还可以体验并下载实例(查看源代码)。 附录:为什么要添加@Input?

    3.2K10

    Angular2 之 属性型指令Angular指令可分为三种创建一个属性型指令 -- 初级应用响应用户引发的事件 -- 高级应用

    绑定宿主元素的事件事件绑定的时候捕捉到这个事件源$event(table指令,这是属性型指令的重点)。 Angular指令可分为三种 组件 属性型指令 结构型指令 今天来学习一下属性型指令。...ElementRef注入到指令构造函数。 这样代码可以访问 DOM 元素。 Input将数据从绑定表达式传达到指令。 Renderer让代码可以改变 DOM 元素的样式。...实现 把@HostListener装饰应用到事件触发时需调用的方法。.../** * 参数1:DOM事件的名字 * 参数2:注入的事件,常用的是$event */ @HostListener('click', ['$event']) onclick(event: MouseEvent... 使用数据绑定向指令传递值,定义这个属性的时候,我们调用了@Input()装饰器。

    1.4K30

    ionic3应该善用组件和指令

    angular4提供了很多功能强大的内置指令,但在现实情况,这些内置指令可能还不能完全满足实际要求,这时我们就需要编写自定义指令来实现特定要求。...其实ionic3(angualr4)和ionic2(angular2)差不多,和ionic1(angular1)就差别非常大了,可以说基本是推倒了重来。...angular1时代,组件和指令是一回事,即严格来说,没有组件这概念,只有指令,而到了angular2时代,虽说组件仍是一种特殊的指令,已经有一定目的明显区分开来,分别用Directive和Component...指令效果.png 5)指令扩展,支持事件操作 我们增加一个点击事件响应操作,点击时,循环切换背景色。...为实现该功能,我们需要在事件处理函数上添加@HostListener装饰器,代码改动如下: import { Directive, Input, ElementRef, HostListener }

    3.5K40

    浅谈Angular

    Angular里的数据绑定: 1.插值表达式 {{}}--括号里可填表达式,不能填语句!...可以给@Input装饰器内部填写一个元数据,这个值是外部使用的名字 内部还是使用原来的名字 3.如果想要给指令添加的元素绑定的事件,需要使用@HostListener装饰器 如果要通过指令控制DOM的显隐...从Observable的中文名:”可观察的”就能看出,Observable的作用是可以起到类似监听的作用,但它的监听往往都是跨页面, 6.组件间通信: 1.父向子 -- @Input装饰器声明输入属性...,要声明子组件里 2.子向父 -- @Output装饰器声明事件,要声明子组件里 3.兄弟之间 -- 中间人模式 拓展:事件源对象 事件,当前操作的那个元素就是事件源。...比如网页元素a标签和input都有onclick事件,当点击a发生onclick事件时,事件源就是a标签,当点击input发送onclic事件是,事件源就是input。

    4.4K10

    Angular 2 + 折腾记 :(9) 初步了解指令,及动手一步一步写个自定义指令

    前言 指令这种东西,可以加强用户体验,减少一些重复工作; 跟着我来实现一个悬浮链接打开的指令 ---- 效果图 ?...ElementRef, // 获取原生dom的 Input, // 接收外部数据的 Renderer2, // 渲染相关的(v4+),angular2.x 用的是Renderer(v4里面依旧标记不赞成...deprecate),两者大同小异,具体看手册API的变动 HostListener, // 监听事件 } from '@angular/core'; @Directive({ selector...30%'); this.r2.setStyle(this.div, 'padding', '10px'); this.r2.setStyle(this.div, 'color', '#f5f5f5... 总结 指令可以实现一些非常炫的功能,比如github上的悬浮效果; 亦或者外部的值会响应的,可以指令绑定一些动画效果,实现数据交互体验的加强等等。。

    46310

    angular,防止按钮的两次点击 原

    我的项目中,用户点击按钮后,如果网页响应慢一点,用户常会再次点击一下。结果就触发了两次 click 操作。 如果是查询还好,如果是post,put请求时,可能就是大问题了。...方案一: 由于我用的是ng-zorro, 方案一是组件增加一个 isLoading=false 的变量, 按钮上指定它的  nzLoading="isLoading" 。 ...click事件:   doSomeClick(){ this.isLoading=true; this.service.createxxxx().subscribe( ()=> this.isLoading...优化: 1、这个实现没有任何禁用状态的效果, 用户可以连续点击,不过只响应一次。...如果点击后想产生遮罩层,可以根组件添加一个变量控制这个层的显示,然后引入一个全局的service来注册一个Subject对象。

    4.2K20

    一个Angular 5教程:一步一步指导实现你的第一个Angular 5应用程序

    在这个Angular 5教程,我们将从头开始构建一个笔记应用程序。如果您一直等待学习Angular 5,本教程适合您。 ? 应用程序的最终源代码可以在这里找到。...Angular CLI运行webpack dev服务器,该服务器将我们的应用呈现在下一个空闲端口上(以便您可以同一台机器上运行多个应用),并进行实时重新加载。...如果您对我们为什么这么做感到好奇,可以Angular的文档阅读它。...我们需要监听组件的DOM keypress事件并输出由此触发的Angular事件。为了收听DOM事件Angular为我们提供了HostListener装饰器。...为什么这样?我们正在从Firebase获得观察结果。但是,我们*ngForCardList组件中等待对象数组,不能观察这些数组。

    42.6K10

    Ionic3 自定义指令

    Angular 中有三种类型的指令 组件 — 拥有模板的指令 结构型指令 — 通过添加和移除 DOM 元素改变 DOM 布局的指令 属性型指令 — 改变元素、组件或其它指令的外观和行为的指令。...组件的概念比较大,本文讲解的是属性指令和结构指令的创建和使用,Angular官方文档 创建属性指令 创建一个指令可以直接使用ionic cli 工具 ionic g directive sxylight...selector: '[sxylight]' 是该指令在外部使用时的名称 @Input 表示一个输入属性,表示可以从父组件传值进来 @HostListener 可用于监听事件 ElementRef 可以...替代dom API 获取元素 使用属性指令 使用自定义指令,有几个地方需要注意:首先需要子 directives.module.ts 文件 导入和导出, 然后需要在你使用的模块中导入。...如果时使用 Ionic CLI工具创建的指令,directives.module.ts 已经自动配置好了,可以不用理会,需要的就是别的模块 引入 DirectivesModule(directives.module.ts

    1.3K30

    【思考】为何弃用jQuery?(下)

    这最后的判决书已经下达,意味着陪伴了大众多年同时也遭开发者唾骂了多年的 IE 浏览器终于可以退出历史的舞台告老还乡了。...同年 IE 市场份额骤降至 29.05%,而 Chrome 则顺理成章的成为了浏览器市场份额的领军人物,增长量并未提高太多 (39.49%)。那么 IE 丢失了的这部分的份额去哪里了呢?...而 Angular/React/Vue 三大框架也成为了前端工程师必会的技能之一。 04 - 2017 2016 年底的一场“Chrome开发峰会”无疑不是将 Chrome 霸主地位昭示出来。...IE 的市场份额继续下降(24.42%)还是没有大幅衰退,其中原因还是因为操作系统的市场份额 WIN7 占有的比例为 61.69%,其默认自带的浏览器版本还是为 IE 8/9 系列,其中 IE8...我想 jQuery 并不会很快的失去它的光辉,国内环境还是拥有大量的老旧系统使用着 IE 浏览器,至少还保证了 jQuery 国内环境还是占有一席之地,这也不是应该乐观的因素。

    1.4K30

    angular入门教程_初学者织围巾简单教程慢动作

    集中回答一些常见的问题 浏览器兼容性 关于 Angular 的浏览器兼容性,请看下图: 有一些国内的开发者会来争论兼容 IE8 的问题,我想给你两个事实: 第一个事实是:截至2017年7月底,Chrome...自动化测试一直是前端开发的一个巨大痛点,由于前端在运行时严重依赖浏览器环境,导致我们一直无法像测试后端代码那样可以去编写测试用例。...ng serve 启动项目,然后从 VS Code 的 debug 界面启动 Chrome: 注意,你可能需要 F5 刷新一下 Chrome 才能进入断点!...比如,Angular 的模板语法就有规定: 你不能在模板里面 new 对象 不能使用=、+=、-=这类的表达式 不能用++、–运算符 不能使用位运算符 为什么要“轻逻辑”?...以上就是为什么大多数模板引擎都要强调“轻逻辑”的最根本原因。 对于 Angular 来说,强调“轻逻辑”还有另一个原因:组件的整个生命周期里面,模板函数会被执行很多次。

    3.3K20

    资讯 | 腾讯发布战略产品“智能云”;沃尔玛手撕亚马逊升级

    据数家科技公司表示,沃尔玛已明确告知一些科技公司,如果它们想要获得沃尔玛的业务,就不得亚马逊的云计算服务AWS为沃尔玛运行应用程序。...该版本 onChange 事件响应会变得更加稳定,并且能够处理 IE11 存在的部分临界情况;同时该版本还优化了对于使用废弃接口的提示,不再强行使用 console.error 提示,而是替换为了...4 Angular 4.2 发布 该版本可以无缝替换之前的 4.x.x 系列版本,主要包含了对于 Angular Form 的极值校验、提升了 i18n 工具等等内容;之外我们还可以参考 《Angular...的现状与 Angular 5 的预定日期》这篇文章来了解更多关于 Angular 的讯息。...5 ESLint 4.0.0发布 作为大版本更新,ESLint 4.0.0 添加了很多的新特性,并且针对之前版本包含的错误进行了修正;可以点击查看原文了解具体的规则更新情况以及升级指南。

    87620

    Angular v8 发布!来看看有什么新功能

    这并非是他们大发善心,而是因为 Google 有 600 多个以 Angular 为基础的应用程序 —— 尽管是谣传,实际数字要高得多。 Angular 8 Ivy 的预览版现在可供测试。...特别是那些广泛的 JavaScript 解决方案变得越来越普遍,这就是为什么现在几乎所有的浏览器都支持支持 Web worker。它们是浏览器自己的线程运行的脚本。...这意味着同一行、列或对角线不能有其他皇后。 n皇后问题的一种解决方案 计算棋盘上所有可能的解决方案的算法被认为是计算密集型的。...差异加载 目前将程序编译成旧 ECMAScript 5 代码仍然是很常见的,因为“古老的 JavaScript ”今天仍然在到处运行。...dead 5IE 9-11 如下图所示,browserslist 指向 ECMAScript 5 浏览器,条目为 IE 9-11。

    3K30
    领券