在React项目中碰到了个问题,输入框绑定了input事件,在IE中初始化会自动执行,刚开始以为是只要有placeholder就会导致问题,后面网上搜了一轮,自己手撸了一下,总结了导致绑定的input事件自动执行的原因...listenCb(e) ); input.placeholder = '3333'; document.body.appendChild(input); 所以要解决这个问题的核心就在于,绑定完...input事件之后,不能有placeholder的变化 我的解决思路是,获得焦点时再去监听input事件,如果input变化时可能涉及到placeholder的变化(react里面会这样),要同时去掉placeholder...;失去焦点时就取消监听input事件,同时恢复placeholder(如果获得焦点时有去掉),核心代码如下: //input是dom节点 let listenCb = function(
典型的例子有:页面加载完毕触发load事件;用户单击元素,触发click事件。 二、事件流 事件流描述的是从页面中接收事件的顺序。... 上面这段html代码中,单击了页面中的 元素, 在冒泡型事件流中click事件传播顺序为 —》—》—》document 在捕获型事件流中click事件传播顺序为...document—》—》—》 note: 1)、所有现代浏览器都支持事件冒泡,但在具体实现中略有差别: IE5.5及更早版本中事件冒泡会跳过元素(从body直接跳到document)。...IE9、Firefox、Chrome、和Safari则将事件一直冒泡到window对象。 2)、IE9、Firefox、Chrome、Opera、和Safari都支持事件捕获。...note: 1)、尽管“DOM2级事件”标准规范明确规定事件捕获阶段不会涉及事件目标,但是在IE9、Safari、Chrome、Firefox和Opera9.5及更高版本都会在捕获阶段触发事件对象上的事件
里面需要进行一点解释 即DOMContentLoaded事件 是在domContentLoaded那段触发的。...//计算load触发时间 var loadTime = t.domComplete - t.domLoading; 更直观的,我们可以在Chrome的developer工具的network选项里面得到我们想要的答案...但是现在w3c规定,只有xhr才有这个事件。 所以,这里,我们一般只能在IE中使用readyStateChange否则,其他浏览器是没有效果的。...这个时候模拟触发DOMContentLoaded事件,其实和onload事件触发时间并没有太久的时间距离。 这种方式兼容低版本IE还是不太可靠的。...//这也是上面两次绑定事件的原因,会保证只执行一次 if (wait !
其他语句的测试,比如.attr("value")和.val(),也是新版本的jQuery表现好于老版本。 2. 用对选择器 在jQuery中,你可以用多种选择器,选择同一个网页元素。...但是,IE5-IE8都没有部署这个方法,所以这个选择器在IE中会相当慢。 (3)最慢的选择器:伪类选择器和属性选择器 先来看例子。...比如,有一个表格(table元素),里面有100个格子(td元素),现在要求在每个格子上面绑定一个点击事件(click),请问是否需要将下面的命令执行100次?...因此,这个事件只需要在父元素绑定1次即可,而不需要在子元素上绑定100次,从而大大提高性能。这就叫事件的"委托处理",也就是子元素"委托"父元素处理这个事件。 具体的写法有两种。...唯一的区别在于,.delegate()是当事件冒泡到指定的父元素时触发,.live()则是当事件冒泡到文档的根元素后触发,因此.delegate()比.live()稍快一点。
其他语句的测试,比如.attr("value")和.val(),也是新版本的jQuery表现好于老版本。 2. 用对选择器 在jquery中,你可以用多种选择器,选择同一个网页元素。...但是,IE5-IE8都没有部署这个方法,所以这个选择器在IE中会相当慢。 (3)最慢的选择器:伪类选择器和属性选择器 先来看例子。...利用这一点,可以大大简化事件的绑定。...比如,有一个表格(table元素),里面有100个格子(td元素),现在要求在每个格子上面绑定一个点击事件(click),请问是否需要将下面的命令执行100次? ...唯一的区别在于,.delegate()是当事件冒泡到指定的父元素时触发,.live()则是当事件冒泡到文档的根元素后触 发,因此.delegate()比.live()稍快一点。
live、delegate 不多用,在Jquery1.7中已经移除,这里不多说 重点介绍 bind、on bind(event,[data],function) bind 是使用频率较高的一种,作用就是在选择到的元素上绑定特定事件类型的监听函数...JavaScript支持在标签中直接绑定事件 2.在JavaScript代码中onXXX绑定:在JavaScript代码中绑定事件可以使JavaScript代码与HTML标签分离,文档结构清晰,便于管理和开发...在JavaScript代码中onXXX绑定 在JavaScript代码中绑定事件的语法为: elementObject.onXXX=function(){ // 事件处理代码 } 其中: elementObject...addEventListener() 是标准的绑定事件监听函数的方法,是W3C所支持的,Chrome、FireFox、Opera、Safari、IE9.0及其以上版本都支持该函数; 但是,IE8.0及其以下版本不支持该方法...jQuery 中的事件绑定具有叠加性,JavaScript 的事件绑定则是可覆盖的。
(触发事件的元素) function eventHandler(e){ //获取事件对象 e = e || window.event;//IE和Chrome下是window.event...FF下是e //获取事件源 var target = e.target || e.srcElement;//IE和Chrome下是srcElement FF下是target...; } } 事件函数的解除绑定 和事件的绑定其实是相对应的,如果需要接触事件的绑定,运行对应的函数就可以了。...如果是jQuery的bind()和delegate()绑定,也是存在对应的解绑函数用以清除注册事件,比如unbind()和undelegate()。...//仅仅是在HTML事件属性 和 DOM0级事件处理方法中 才能通过返回 return false 的形式组织事件宿主的默认行为。
由于对于disabled为true的LINK元素,Chrome将不加载其样式文件,因此也无法将文件中的样式添加到document.styleSheets中;也只有Chrome在将disabled属性从false...并订阅img元素的onload和onerror事件,IE5~10下还订阅了onreadystatechange事件,统计整理其在IE5~11、Chrome和FF下的行为特点和事件响应延时。...对于空字符串,IE行为十分诡异,IE9~10中首次加载readyState值从"uninitialized"->"loading",后续加载则触发两次onreadystatechange事件,且readyState...对于//:0,IE会取消网络请求,IE9~10中会触发两次onreadystatechange事件,且readyState值从"unintialized"->"complete"->"complete"...区别在于IE9~10触发两次事件,IE5~8触发一次。 Chrome下 1.
其实,ng只有在指定事件触发后,才进入$digest cycle: DOM事件,譬如用户输入文本,点击按钮等。...我们都知道angular建议一个页面最多2000个双向绑定,但在列表页面通常很容易超标。 譬如一个滑动到底部加载下页的表格,一行20+个绑定, 展示个100行就超标了。...digest过程中,filter会执行很多次,至少两次。...所以要避免在filter中执行耗时操作。...减少事件广播,使用双向数据绑定或共享service等方法来代替。
dynamic-css 使得你可以借助 MVVM 模式动态生成和更新 css,从而将本插件到来之前,打散、嵌套在 js 中的修改样式的代码剥离出来。...比如你要做元素跟随鼠标移动,或者根据滚动条位置的变化而触发一些效果,原本你要写 js 去绑定滚动事件,然后计算偏移量,然后更新元素 css,使用 dynamic-css,你只要根据语法去写好 css 表达式就可以了...,情况复杂之后 js 事件相互触发稍有不慎就会坠入苦海。...dynamic-css 是基于 avalon js 的一个扩展,只要是 avalon js 支持的语法,dynamic-css 都能够支持,甚至可以在 css 表达式里面调用 js function。...dynamic-css 使你从此脱离事件和选择器的苦海,来到数据和绑定的乐园!欢迎使用和交流!
其他语句的测试,比如.attr(“value”)和.val(),也是新版本的jQuery表现好于老版本。 2. 用对选择器 在jQuery中,你可以用多种选择器,选择同一个网页元素。...但是,IE5-IE8都没有部署这个方法,所以这个选择器在IE中会相当慢。 (3)最慢的选择器:伪类选择器和属性选择器 先来看例子。...为了获取这个属性,必须连续两次调用jQuery,第一次是$(this),第二次是attr(‘id’)。 事实上,这种处理完全不必要。...比如,有一个表格(table元素),里面有100个格子(td元素),现在要求在每个格子上面绑定一个点击事件(click),请问是否需要将下面的命令执行100次? ...因此,这个事件只需要在父元素绑定1次即可,而不需要在子元素上绑定100次,从而大大提高性能。这就叫事件的”委托处理”,也就是子元素”委托”父元素处理这个事件。
;js对象:window,image select 文本被选中触发,js对象:window 2.1 兼容点 当load事件应用在script元素上时,在Ie不支持,需要用onreadystatechange...事件来代替(error会作为一个状态来传递); script的error,在ie上也是不支持的,也是通过onreadystatechange事件来代替(状态值)。...3.3 代码触focusin事件 我们这里需要做一个兼容方案处理,在现代浏览器下需要用focus来触发,因为我们绑定是focus事件。.... 4.2 注意 onpropertychanage事件,是属性值发生改变就会触发,如果我们一个动作导致两个属性值改变,就会触发两次: 触发这三个事件,只有非英文输入才触发(用输入法来确定的) ie8-不支持此类事件 5.1 composition与input事件的结合,以及标准浏览与ie、edge的区别 ?
但在 IE 中并没有 height 和 width 这两个属性,在 Chrome 和 FireFox 中还额外有两个属性 —— x 和 y,这两个属性相对于视口坐标位置,分别表示该元素的左上角距离视口最左侧或最顶部的距离...阻止事件冒泡 在绑定事件后,事件冒泡可能会发生,但有时我们不想让它出现。...但在 IE9 之前的 IE 中,可以通过事件对象的 returnValue 属性设置为 false 来达到同样的效果。比如下面例子,当点击后,我们不让页面跳转,这样可以在页面跳转之前验证一些东西。...input 事件会在 input 框中输入内容时触发。但在 IE8 中并没有被实现。IE 中有另一套事件 —— propertychange。...如 Google Chrome 及 Safari 不会触发方向键的 keypress 事件;而Firefox 不会触发如 SHIFT 键等修改键的 keypress 事件。
IE6、7、8下 submit事件不冒泡。 IE6、7、8下 change事件要等到blur时才触发。...pageX/Y获取到的是触发点相对文档区域左上角距离,以页面为参考点,不随滑动条移动而变化 问题二:在IE 中,event 对象有 x, y 属性(事件发生的位置的 x 坐标和 y 坐标)火狐中没有。...缺点:在标准浏览器中正常,但在IE6/7/8中不支持 window.onload = function () { var oBtn = document.getElementById('btn')... 属性是没有效果的,虽然 IE8 解决了这个 bug,但还是不建议使用。...oninput是onpropertychange的非IE浏览器版本,支持firefox和opera等浏览器,但有一点不同,它绑定于对象时,并非该对象所有属性改变都能触发事件,它只在对象value值发生改变时奏效
在常规的 Javascript 代码中,通常使用 window.onload 方法,而在jQuery中,使用的是$(document).ready() 方法,极大的提高Web应用程序的速度。...要解决这个问题,可以使用 Jquery 中另一个关于页面加载的方法 ---load()方法。 Load()方法会在元素的onload 事件中绑定一个处理函数。...如果处理函数绑定给 window 对象,则会在所有内容(包括窗口、框架、对象和图像等)加载完毕后触发,如果处理函数绑定在元素上,则会在元素的内容加载完毕后触发。...原理是对于 IE 在非 iframe 内时,只有不断地通过能否执行 doScroll 判断 DOM 是否加载完毕。...的ready()方法 请注意,如果事件已经被触发,回调将不会被执行。
绑定简单事件 在DOM中DOM0级绑定事件的方式是直接给事件属性赋值,但是这样有个缺点就是每次指定的事件处理程序会把之前的覆盖掉。...第二,只触发jQuery对象集合中第一个元素的事件处理函数。 第三,这个方法的返回的是事件处理函数的返回值,而不是据有可链性的jQuery对象。...事件对象 在DOM学习的时候我们很痛的一点就是早期的ie版本的浏览器和最新标准的浏览器的事件对象的获取及事件对象的属性直接都有些兼容问题。 事件对象获取兼容。...IE678:window.event 标准浏览器直接从事件处理程序的参数中获得事件对象e e = e || window.event; 在jQuery的事件处理程序中,可以直接获取事件对象,所有浏览器都兼容...自定义事件 jQuery对象的的on方法不仅仅能绑定DOM中已经定义的事件,而且还可以注册和触发非标准事件也就是自定义的事件。
本文将带你深入浅出,探索 JQuery 中的事件绑定,为你揭开这个奇妙世界的面纱。 开启奇妙之旅 在开始探索 JQuery 事件绑定之前,我们先来简单了解一下 JQuery。...事件绑定是指在特定的 HTML 元素上设置一个监听器,用于捕捉用户触发的事件(比如点击、输入、鼠标移动等),并执行相应的操作。在 JQuery 中,事件绑定通常使用 on 方法来完成。...这只是其中的一小部分,实际上 JQuery 提供了丰富的事件类型,以满足不同场景的需求。 事件处理函数 在 JQuery 中,事件处理函数是在事件被触发时执行的函数。...深入挖掘:事件对象与冒泡阻止 事件对象的魅力 在事件触发时,浏览器会创建一个事件对象,其中包含了与事件相关的信息。在 JQuery 的事件处理函数中,这个事件对象通常被作为参数传递给处理函数。...在某些情况下,我们希望阻止事件冒泡,以防止事件触发到不想被触发的元素上。 在 JQuery 中,可以使用 stopPropagation 方法来阻止事件冒泡。
其他语句的测试,比如.attr("value")和.val(),也是新版本的jQuery表现好于老版本。 2. 用对选择器 在jQuery中,你可以用多种选择器,选择同一个网页元素。...但是,IE5-IE8都没有部署这个方法,所以这个选择器在IE中会相当慢。 (3)最慢的选择器:伪类选择器和属性选择器 先来看例子。...为了获取这个属性,必须连续两次调用jQuery,第一次是$(this),第二次是attr('id')。 事实上,这种处理完全不必要。...比如,有一个表格(table元素),里面有100个格子(td元素),现在要求在每个格子上面绑定一个点击事件(click),请问是否需要将下面的命令执行100次? ...因此,这个事件只需要在父元素绑定1次即可,而不需要在子元素上绑定100次,从而大大提高性能。这就叫事件的"委托处理",也就是子元素"委托"父元素处理这个事件。
事件对象: 由于IE-DOM和标准DOM实现事件对象的方法各不相同,导致在不同 浏览器中获取事件对象变得比较困难.针对这个问题,jquery进行了必要的扩 展和封装,从而使得在任何浏览器中能很好的轻松的访问获取事件对象以及事...”click” (2)event.preventDefault()方法 阻止默认事件行为.js中符合W3C规范的preventDefault()方法在IE浏览器中无效....jquery对其进行了封装,使之能兼容各大浏览器 (3)event.stopPropagation()方法 阻止事件的冒泡.js真符合W3C规范的stopPropagation()方法在IE浏览器中无效...() 方法是在mouseover中相当于 IE浏览器的event.fromElement()方法,在mouse 中相当于IE浏览器的event.toElement方法. jquery对其进行了封装,使之能兼容各大浏览器...度.在IE浏览器中还应该减去默认的2px的边框.
12. iOS高版本中,在微信内访问网页,音频背景音乐无法自动播放 其实在高版本浏览器中,基于安全措施,已经不允许自动播放音频了,但在微信内是可以的 微信安卓环境下正常,但在高版本的iOS下就失效了,解决办法是在微信的...React 的componentDidMount事件调用的时机还不太清晰, 虽说是在组件加载完成之后才调用,但在实践中的一个需求发现一个问题,不太好解决,查了蛮久还没看到合适的方案 比如要做一个弹窗组件...中性能面板汇总可以看到,在键盘按下和松开的时候,会触发Angular的keypress和keyup事件,每个耗时几百毫秒 解决办法就是对不需要绑定的数据,尽量不用Angular自建的绑定,换成普通方式就好...在iPad中,输入中文,输完拼音然后选中文的时候是不会触发onkeyup事件的 这个问题在监听了keyup事件的时候会出问题,最后检测到的只是拼音 解决办法是加上input或change事件 51....但在新版Chrome中(如62),连提示都没有了,需要手动在设置中添加Flash支持的网站例外才能播放 看了所用的Flash播放器(CuPlayer),播放前是先检测插件是否存在的,这造成了在新版Chrome
领取专属 10元无门槛券
手把手带您无忧上云