【问题标题】:IE11 in Document mode 5 doesn't fire "onresize" event in when scaling (zooming), any site文档模式 5 中的 IE11 在缩放(缩放)时不会触发“onresize”事件,任何站点
【发布时间】:2014-12-15 06:31:05
【问题描述】:

如果这是一个真正的错误,有人知道解决方法吗? 或者也许我做错了什么?

重现步骤:

  1. 在 IE11 中打开任意网站(例如,http://www.microsoft.com
  2. 在 F12 Developer tools Emulation 中将 Document mode 设置为 5
  3. 在 F12 开发者工具控制台中运行 window.onresize = function(){ console.log("onresize fired"); }
  4. 尝试缩放页面(例如,使用 ctrl+ 鼠标滚轮)。

预期结果:在控制台中打印“onresize failed”。

实际结果:控制台中没有消息。

【问题讨论】:

  • "将文档模式设置为 5" 我们在谈论 IE 5 测试吗? 2014 年?
  • Document mode 5 应该是怪癖模式吧?你需要那个吗?为什么不使用实际的 IE7 实例进行测试呢?
  • 应该是 IE6 测试,因为下一个文档模式是 7。是的,在文档模式 > 5 下,事件可以正常工作。
  • 我的应用是在 IE6 时代设计的,现在用户在 IE11 中运行它。是的,我们正在进行迁移,但这是一团糟,一团糟……
  • onResize() 在旧浏览器中滚动缩放时不会触发(不确定确切的列表,但很确定它从 IE8+ 开始)如果您只是正常调整浏览器的大小,您会看到此事件触发

标签: javascript resize scale compatibility internet-explorer-11


【解决方案1】:

有几点需要考虑:

  • 首先,控制台仅在高于 IE9 标准模式的文档模式中受支持。由于您的测试侧重于 IE5(Quirks)模式,因此 alert 或 someElement.innerHTML( "Message" ) 可能更有效。

  • resize event 有一些微妙的行为,试图平衡标准要求的行为与遗留(专有)IE 行为之间的差异。有关详细信息,请参阅链接参考页面中的备注。

根据可用信息,我将其称为“按设计”行为(或者可能是“按预期”),而不是“错误”行为。

对于您的具体情况,您需要查看正在实现的效果,看看是否有不同的方式来触发它。或者,您可以尝试IE Enterprise (EMIE) mode。 (有传言说它在模拟旧文档模式方面做得更好。YMMV。)

希望这会有所帮助...

【讨论】:

  • 感谢您的回答!我试过IE Enterprise,它没有帮助。目前我正在考虑这个解决方法:在按下ctrl 键的情况下捕获mousewheel 事件并手动触发resize
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-07
  • 2013-06-16
  • 2011-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-16
相关资源
最近更新 更多