仅含DOCTYPE声明的HTA默认以IE9而非IE7模式运行的原因是什么
导致该现象的核心原因
这种表现是HTA依托的MSHTML(IE渲染引擎)的全局兼容配置被修改导致的,最常见的是两类设置:
- 组策略兼容性视图配置
路径为计算机配置/管理模板/Windows 组件/Internet Explorer/兼容性视图下的「配置文档模式」策略,如果被管理员设置为「IE9模式」,会覆盖带DOCTYPE声明的HTA的默认文档模式规则。由于明确指定X-UA-Compatible元标签的优先级高于组策略,测试用的HTA #3本身指定了IE=9,所以结果不受影响,完全符合反馈的测试表现。 - 浏览器仿真注册表项配置
注册表路径HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION下如果存在mshta.exe的键值,且值被设为9999(对应强制IE9渲染模式),也会出现该现象:无DOCTYPE的HTA仍然走默认IE5 quirks模式输出5,带DOCTYPE的HTA优先使用注册表指定的IE9模式,而HTA #3明确指定的IE9规则优先级最高,所以输出结果符合预期。
补充说明
默认状态下带HTML5 DOCTYPE的HTA默认使用IE7模式,和普通IE浏览器的默认规则不同,这也是HTA场景特有的表现,和普通IE页面的兼容问题区分开。
内容的提问来源于stack exchange,提问作者LesFerch
相关产品推荐
相关产品推荐

