我有一个设计为在 < IE9 版本中运行良好的 Web 应用程序。随着整个公司升级到较新的 IE 版本,该应用程序只有在我打开“兼容性视图”时才能正常运行。
- 这真的是一件好事吗?我的意思是,这真的是长期解决方案吗?或者我应该开始重新设计我的应用程序以支持更新的 IE 版本——即使我没有预见到使用 HTML5 的任何新功能?
- MS 将支持“兼容性视图”切换多久?如果没有这样的选项,在 IE 12+ 中会怎样?
- 是否有任何文件列出了我应该修复的元素列表,以使我的应用程序在新旧 IE 中兼容?
我有一个设计为在 < IE9 版本中运行良好的 Web 应用程序。随着整个公司升级到较新的 IE 版本,该应用程序只有在我打开“兼容性视图”时才能正常运行。
这真的是一件好事吗?我的意思是,这真的是长期解决方案吗?或者我应该开始重新设计我的应用程序以支持更新的 IE 版本——即使我没有预见到使用 HTML5 的任何新功能?
不,它从来都不是一个长期的解决方案。如果可以的话,你绝对应该开始重新设计你的应用程序。您不必为了符合 Web 标准而使用任何新的 HTML5 功能——这是完全不同的两件事。
如果您的应用程序在最新版本的 IE 中无法正常运行,这并不是因为您没有使用 HTML5。更有可能是因为它的设计方式依赖于旧版本的问题,导致它们以非标准方式运行。例如,它可能依赖于 IE6 或 IE7 如何处理某些 HTML 元素或 CSS 样式的问题。
MS 将支持“兼容性视图”切换多久?如果没有这样的选项,在 IE 12+ 中会怎样?
IE11 中的兼容性视图按钮已经消失;强制站点使用它的唯一方法是将其添加到兼容性视图设置中的列表中,如此处所述。你可以看到微软已经在采取措施逐步淘汰这个功能,尽管是逐步的。
您还可以使用X-UA-Compatible
IE8 中引入的标题来模拟 IE7 文档模式:
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
但即使这样在 IE11 中也已被弃用,所以如果你确实使用它,请知道从长远来看它不再可行。
是否有任何文件列出了我应该修复的元素列表,以使我的应用程序在新旧 IE 中兼容?
There isn't any single document that will help you with this because it's not just a matter of "fixing elements", it's a matter of developing with standards compliance in mind, which is a huge topic in itself.
Fortunately, there are many good resources out there today for helping you develop with the latest standards. In particular, when it comes to working with IE, a good starting resource is modern.IE.
Unless you are going to be adding a lot of features you don't really need to update it. You can force compatibility using headers within your page.
It's mostly js that breaks, though sometimes css/html a bit too. Biggest issue: you probably need to upgrade your js libraries if you want to stay current, otherwise all that cross browser normalization of functions they do (unifying multiple browser implementations into 1 function) will be missing coverage for browser versions released after the release date of the js library.
In conclusion, I think it's safe to use the compatibility view and will save time/effort, but you should see if Microsoft provides a deprecation schedule. And if it's an application that will be around for a long time, you may want to get current just because theoretically it should be easier to upgrade with every cycle since it will force you to refactor into a more browser-agnostic codebase.
Also, check with your company -- for internal apps they usually control these things & will advise their employees not to upgrade until instructed to.