我有一个网站可以在 IE7、IE8、IE9、IE10、Firefox 和 Chrome、Opera 和 Safari 的所有 PC 和 Mac 版本中正确显示。但是,在 IE11 中,它显示部分标头和 javascript,但不显示 html。有任何想法吗?
1 回答
IE11 Developer Tools 中的 Network-tab 显示没有对您的样式表的请求,并且您的<head>
内容是内联呈现的。这表明 IE11 不会将内容视为 html(并且不会对其进行解析)。您正在发送带有内容类型的 html,表明它是 xml,但带有 html 文档类型。我会先尝试更改内容类型。
一般变化
- 您正在使用 http-header 提供 html4
Content-Type: application/xhtml+xml
。应该是text/html
。 - Html4 没有自闭合标签。
- 您
<style>
缺少该type
属性。 - 你有内联样式。这是我和可维护性先生之间的个人问题。
- 某些输入元素缺少
<label>
. 可访问性! - 您将一些块元素嵌套在内联元素中。这更像是一个验证问题,我没有看到实际上有这个问题的浏览器。
- 中缺少 html 编码
<a href="..." />
。所有与号 (&) 必须编码为 (&)。您还需要适当的 url 编码。 - 没有
width
属性<div>
。
具体错误
- 第 17-27 行有
<script>
一个<style>
. - 第 196 行有 a
<input>
和两个value
属性。
Asp.net 用户代理 shazaam
我正在使用我的高级超级英雄技能来检测您正在使用 ASP.NET。(或者至少有一个隐藏__VIEWSTATE field
和一个ASP.NET_SessionId
cookie。)您需要添加一个浏览器配置文件才能使 asp.net javascript 工作。
Asp.net 使用用户代理检测来确定您的浏览器支持什么。用户代理字符串与服务器上的浏览器配置文件匹配,并填充Request.Browser
对象。此信息确定您<form runat="server">
是否应该呈现 __doPostBack 函数。Internet Explorer 11 是第一个不将自己标识为 MSIE 的 Internet Explorer 版本,之前的检测失败。您需要将配置文件添加到您的~/App_Browsers
文件夹(如果缺少,请创建一个新文件)。此代码段将配置 IE11ecmascriptversion
用于检测对回发 javascript 的支持(除其他外)。
<browsers>
<!-- Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko -->
<browser id="IE11" parentID="Mozilla">
<identification>
<userAgent match="Trident/(?'layoutVersion'\d+\.\d+)" />
</identification>
<capture>
<userAgent match="rv:(?'version'(?'major'\d+)(\.(?'minor'\d+)?))" />
</capture>
<capabilities>
<capability name="browser" value="IE" />
<capability name="ecmascriptversion" value="3.0" />
<capability name="layoutEngine" value="Trident" />
<capability name="layoutEngineVersion" value="${layoutVersion}" />
<capability name="majorversion" value="${major}" />
<capability name="minorversion" value="${minor}" />
<capability name="type" value="IE${major}" />
<capability name="version" value="${version}" />
<capability name="preferredRenderingMime" value="text/html" />
</capabilities>
</browser>
</browsers>