gpt4 book ai didi

internet-explorer - 如何让 IE 7 打开 XHTML 文件?

转载 作者:行者123 更新时间:2023-12-01 10:16:20 26 4
gpt4 key购买 nike

我正在构建的一个应用程序正在生成 XHTML 文档,这些文档将以多种不同的方式分发,包括电子邮件。我可以在 Firefox 或 Chrome 中打开这些文档(我所说的“打开”是指从 Windows 资源管理器,而不是通过 Web 服务器)。但是,对于 IE 7,我遇到了两个 - 可能是三个 - 不同的问题。

如果文件以扩展名“.xhtml”命名,则 IE 会启动然后关闭。有时它仍在任务管理器中运行,我必须终止它。有时不是。

如果我用扩展名“.htm”或“.html”命名它们,那么它们可以正常打开,除了 IE 信息栏出现告诉我它已经阻止了某种内容。这些文档不包含任何脚本或 iframe 或对象 - 它们尽可能地是普通的 XHTML。他们甚至不引用外部 CSS。

当我为其开发此应用程序的客户在他的 环境中打开文档时(此时他只是使用“.xhtml”扩展名),IE 打开它们并将它们呈现为 XML 文档。

我在 Google 上花了相当多的时间试图弄清楚这个问题,我发现的一切都与在 HTTP header 中指定 MIME 类型有关,这并不是特别有用,因为我'我实际上并没有提供这些文件。

所有(似乎)文件都有正确的 DOCTYPE、处理指令和 namespace 声明;每个的顶部看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

有什么想法吗?

最佳答案

所以,有趣的故事。 IE7 doesn't actually support strict XHTML .

具体来说,如果您使用 application/xhtml+xml 内容类型为它提供 XHTML,它会说“哦,那个新奇的 XHTML 东西,我对此一无所知",并将其视为 XML 文档。另一方面,如果您为它提供内容类型为 text/html 的 XHTML,它会说,“这个 HTML 有点有趣,但我可以抑制住它。”

有一个非凡的 hack - suggested by the W3C, no less - 使 IE 将它认为是 XML 内容的内容呈现为 HTML。您基本上是将仅适用于 IE 的 xsl:stylesheet 处理指令添加到文档中,并引用具有 HTML 输出类型的 XSLT 身份转换。其他浏览器忽略它; IE 将它认为是 XML 文档的内容(转换为它自己)然后将其呈现为 HTML。我不知道是应该对这个 hack 印象深刻还是感到震惊。

但只有当文档可以解析对转换的引用时,该 hack 才有效。打开附有这些文档的电子邮件的人不一定能够执行此操作。我想有一种方法可以将转换包含在 XML 本身中,但我已经在这上面花费了太多时间。如果它让我得到正确答案,我会花更多时间,但这只会让我得到不同类型的错误答案。

所以我要做一件愚蠢的事情,并用 .htm 扩展名命名文件。注册表设置将文件扩展名映射到内容类型。所以 .htm 扩展名表示 text/html,而 .xhtml 扩展名表示 application/xhtml+xml。 IE 和其他所有使用注册表来确定内容类型的东西都会将这些文档视为 text/html,并且它们会呈现,整个过程或多或少会起作用。但我对此并不满意。

关于internet-explorer - 如何让 IE 7 打开 XHTML 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/513034/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com