2023年6月21日发(作者:)
关于resize事件,不同浏览器的触发⾏为标准参考Mozilla Developer Center 对 ze 的描述如下,窗⼝ resize 事件的事件句柄。resize 事件在窗⼝⼤⼩变化时触发。并⾮规范的⼀部分。MSDN 中 onresize 是⼀个许多对象均⽀持的事件,onresize 在对象的尺⼨将要变化时被触发。IE 中 onresize 不仅可以应⽤于 window对象,还可以应⽤于各种拥有布局(触发了hasLayout属性)的元素对象上。ze 虽然不是 W3C 规范中的事件,但已被⽬前各主流浏览器所⽀持。问题描述IE 标准模式下 BODY 元素的⾼度发⽣变化时就会触发 ze 事件。造成的影响在标准模式下,IE 对 onresize 事件的特殊⽀持可能导致作者由于动态改变了某个元素的尺⼨⽽使 BODY 元素的尺⼨也发⽣了变化,从⽽触发了 ze 事件,但此时浏览器的窗⼝并没有改变⼤⼩。其他浏览器则不会触发 ze 事件。这种事件触发差异可能会造成兼容性问题。受影响的浏览器IE6(S) IE7(S) IE8(S)
问题分析分析以下代码:
HTML: height:autoBODY: height:autoHTML: height:100%BODY: height:autoHTML: height:100%BODY: height:100%FAILFAILFAILIE6(Q) IE7(Q) IE8(Q)OKOKFAILIE6(S) IE7(S) IE8(S)FAILFAILFAILFirefox Chrome Safari Opera在测试代码中,每隔 1 秒动态改变的是【d】的⾼度,从 ze 事件触发条件上看应该与【d】的⾼度的改变没有关系,然⽽在 IE 标准模式中,【d】的⾼度的变化却触发了 ze 事件。修改上述测试代码,对【d】的宽度每秒进⾏⼀次设置,结果显⽰在 IE6(S) 中【d】的宽度变化也会触发ze 事件。IE6(Q) IE7(Q) IE8(Q) 中,根元素为 BODY,且 BODY 元素⾼度始终为 100%。⽆论【d】如何改变⾼度,均不会影响 BODY 元素的⾼度,所以 ze 没有被触发。为 HTML 与 BODY 元素均设置为 height:100% 后,IE 标准模式下,这时【d】的⾼度的改变也不会影响到 BODY 元素⾼度的改变。所以 ze 也没有被触发。⽽当 BODY 元素的⾼度不是100%,由于 BODY ⼦元素的⾼度变化导致了 BODY ⾃⾝⾼度的变化,IE 标准模式下就会触发 ze,虽然这时浏览器的窗⼝的⼤⼩并没有发⽣变化。解决⽅案1. 不期望触发 ze 事件时:为 HTML 与 BODY 元素设置 height:100% 和 width:100% 以防⽌因为其尺⼨变化⽽触发 ze 事件,如上表中第三⾏。2. 期望触发 ze 事件时:在⾮ IE 浏览器中,主动去触发⼀次 ze 事件,代码如下:var evt = Event("MouseEvents");useEvent("resize", true, true, this, 0, 0, 0, 0, 0, false, false, false, false, 0, null);chEvent(evt);ze 事件
2023年6月21日发(作者:)
关于resize事件,不同浏览器的触发⾏为标准参考Mozilla Developer Center 对 ze 的描述如下,窗⼝ resize 事件的事件句柄。resize 事件在窗⼝⼤⼩变化时触发。并⾮规范的⼀部分。MSDN 中 onresize 是⼀个许多对象均⽀持的事件,onresize 在对象的尺⼨将要变化时被触发。IE 中 onresize 不仅可以应⽤于 window对象,还可以应⽤于各种拥有布局(触发了hasLayout属性)的元素对象上。ze 虽然不是 W3C 规范中的事件,但已被⽬前各主流浏览器所⽀持。问题描述IE 标准模式下 BODY 元素的⾼度发⽣变化时就会触发 ze 事件。造成的影响在标准模式下,IE 对 onresize 事件的特殊⽀持可能导致作者由于动态改变了某个元素的尺⼨⽽使 BODY 元素的尺⼨也发⽣了变化,从⽽触发了 ze 事件,但此时浏览器的窗⼝并没有改变⼤⼩。其他浏览器则不会触发 ze 事件。这种事件触发差异可能会造成兼容性问题。受影响的浏览器IE6(S) IE7(S) IE8(S)
问题分析分析以下代码:
HTML: height:autoBODY: height:autoHTML: height:100%BODY: height:autoHTML: height:100%BODY: height:100%FAILFAILFAILIE6(Q) IE7(Q) IE8(Q)OKOKFAILIE6(S) IE7(S) IE8(S)FAILFAILFAILFirefox Chrome Safari Opera在测试代码中,每隔 1 秒动态改变的是【d】的⾼度,从 ze 事件触发条件上看应该与【d】的⾼度的改变没有关系,然⽽在 IE 标准模式中,【d】的⾼度的变化却触发了 ze 事件。修改上述测试代码,对【d】的宽度每秒进⾏⼀次设置,结果显⽰在 IE6(S) 中【d】的宽度变化也会触发ze 事件。IE6(Q) IE7(Q) IE8(Q) 中,根元素为 BODY,且 BODY 元素⾼度始终为 100%。⽆论【d】如何改变⾼度,均不会影响 BODY 元素的⾼度,所以 ze 没有被触发。为 HTML 与 BODY 元素均设置为 height:100% 后,IE 标准模式下,这时【d】的⾼度的改变也不会影响到 BODY 元素⾼度的改变。所以 ze 也没有被触发。⽽当 BODY 元素的⾼度不是100%,由于 BODY ⼦元素的⾼度变化导致了 BODY ⾃⾝⾼度的变化,IE 标准模式下就会触发 ze,虽然这时浏览器的窗⼝的⼤⼩并没有发⽣变化。解决⽅案1. 不期望触发 ze 事件时:为 HTML 与 BODY 元素设置 height:100% 和 width:100% 以防⽌因为其尺⼨变化⽽触发 ze 事件,如上表中第三⾏。2. 期望触发 ze 事件时:在⾮ IE 浏览器中,主动去触发⼀次 ze 事件,代码如下:var evt = Event("MouseEvents");useEvent("resize", true, true, this, 0, 0, 0, 0, 0, false, false, false, false, 0, null);chEvent(evt);ze 事件
发布评论