【发布时间】:2015-05-28 16:47:05
【问题描述】:
它在 Chrome 中运行良好,但在 IE 中它会返回代码...我认为这与怪癖模式有关,但我似乎找不到确切的问题。
【问题讨论】:
标签: javascript html internet-explorer cross-browser
它在 Chrome 中运行良好,但在 IE 中它会返回代码...我认为这与怪癖模式有关,但我似乎找不到确切的问题。
【问题讨论】:
标签: javascript html internet-explorer cross-browser
我认为这里的问题是您的文档被 HTTP 响应标头标识为 UTF-8 编码,但到达时带有表明它是 UTF-16 编码的 BOM。 Internet Explorer 10 和 11 赋予标头更多的权重,而不是 BOM。结果,UTF-16 文档被读取为 UTF-8,这导致在几乎每个字节之后添加大量空字符,导致您的标记被解析为一般文本。
您可以在以下视图中查看 BOM(FF FE、“ÿþ”)和空字符(00):
注意您的文档类型的表示。空字符导致它被打散,以免被解析成这样:
<!DOCTYPE html>
但是相反,像这样(.代表空字符):
<.!.D.O.C.T.Y.P.E. .h.t.m.l.>
这种模式在整个整个文档中重复出现,因此它的任何部分都不会被解释为 HTML,从而使所有内容都呈现为基本文本:
保存文档时,请确保保存为 UTF-8。我还应该指出,Internet Explorer 的继任者 Microsoft Edge 的行为方式并不相同。 Microsoft Edge 将 BOM(声明 UTF-16 编码)优先于标头中的 charset 指令,从而正确呈现页面。
我遇到了许多声称记事本(据报道您使用过)总是插入 BOM 的报告。我鼓励您在 Web 开发期间避免使用记事本作为编辑器。相反,请使用 Visual Studio Code 之类的内容。
【讨论】:
看来 IE (Edge) 在显示这个 htm 文件时遇到了一些问题。 当我使用完全相同的源代码但作为 html 文件时。 IE 显示它很好。当我使用开发者工具时,IE 10 及以下版本也可以正确显示。
你应该知道,多个body标签会导致一个错误。你绝对应该避免这种情况!
编辑: 您也可以尝试将其添加到您的脑海中
<meta http-equiv="X-UA-Compatible" content="IE=10"/>
【讨论】: