1

广泛的研究并没有让我理解为什么会发生以下情况 - 我希望 SO 社区可以提供帮助......

我将为什么 HTML1113:文档模式从 IE9 标准重新启动到 QuirksD:\...中提到的文件复制到本地文件系统并在 IE9 中打开 xml(通过在 url 栏中指定路径)。
令人惊讶的是,该行为与打开网络版本完全不同。
现在我可以理解“我的电脑”区域设置不同于 Internet 区域的设置解释了下面提到的弹出窗口,但我不明白为什么结果不同以及为什么不自动选择怪癖模式,就像在在网络上打开 xml。

当我打开本地文件时,我得到以下信息:

允许脚本

这无疑是由本地区域设置引起的。接下来,浏览器模式是 IE9(不是之前的自动怪癖),它在应用 XSLT 时失败:

XSLT8690

首先,我认为这是由 MSXML6 DOM 基本设置(例如AllowXsltScript未设置为 true)引起的,但我不再确定这一点,因为打开 Web 版本时一切正常。
那么为什么本地失败呢?

更奇怪的是,打开网络版本会导致自动怪癖模式和正确的结果,但是当我切换到本地文件的怪癖模式时,它在 MSXML6 DOM 对象上失败 - 实际上这对我来说比没有错误更有意义,因为怪癖模式可能只提供 MSXML3 (或者应该只提供 - 但是为什么网络版本中的自动怪癖可以?)。

怪癖1

接受后变为

怪癖2

现在,当再次选择 IE9 标准模式时,我得到

IE9take2_console

结果是预期的

IE9take2

使用本地文件时的背诵事件(除了区域设置差异):

  1. IE9 标准模式 XSLT8690 错误
  2. 切换到怪癖模式错误
  3. 现在可以切换回 IE9 标准模式

打开网页版时背诵事件(除了区域设置的差异):

  1. 自动怪癖模式
  2. 页面在怪癖中正确打开 - 显然 MSXML6 在自动怪癖模式下仍然使用
  3. 切换到IE9标准模式也可以
  4. 回到上面的怪癖模式错误(“参数不正确”)

是什么导致了所有这些特殊的差异?

4

1 回答 1

2

这个花了我一些时间,但我明白了!

Paul Sweatte 的评论让我发现了很多已经绘制出来的问题,但也导致了一些未知的水域,但最终我开始直接通过注册表尝试 IE9 我的电脑区域安全设置,可惜无济于事,直到.....我查看了再次弹出 Internet 选项窗口,并注意到有不止一个地方可以更新安全设置.....

浏览所有与非区域相关的 IE9 设置,我选择了“高级”选项卡,并在安全小节中遇到了一个有希望的未选中选项:

Allow active content to run in files on My computer

将其更改(在本例中为checked)需要重新启动,但是当我这样做并重新打开本地 xml 文件时,它突然表现得像 web 一样:它quirks mode正确打开。此外,切换到 IE9 标准模式并返回到 quirks 模式的行为与 Web 模式相同。此外,关于“脚本通常是安全的”的弹出警告也不再存在。

这就解释了为什么XSLT8690会发生错误:xslt,或者可能只是其中的 javascript 被认为是active content.

故事结局?
对于这个问题,是的,但我仍然想知道为什么自动怪癖模式可以,但手动选择的怪癖不是。
我怀疑在第一次运行时会在自动切换到怪癖发生之前处理 xslt,那时不再需要 MSXML6,因为结果页面已经可用。但是当您以 quirks 模式打开 xml 时,它会尝试以 quirks 模式执行 xslt,并且由于可用的 MSXML3 而不是 MSXML6 而无法执行。

于 2012-05-12T21:30:08.633 回答