【发布时间】:2013-10-26 18:12:06
【问题描述】:
我的网站可以在 IE7、IE8、IE9、IE10、所有 PC 和 Mac 版本的 Firefox 和 Chrome、Opera 和 Safari 中正确显示。但是,在 IE11 中,它显示部分标头和 javascript,但不显示 html。有什么想法吗?
【问题讨论】:
标签: asp.net internet-explorer-11
我的网站可以在 IE7、IE8、IE9、IE10、所有 PC 和 Mac 版本的 Firefox 和 Chrome、Opera 和 Safari 中正确显示。但是,在 IE11 中,它显示部分标头和 javascript,但不显示 html。有什么想法吗?
【问题讨论】:
标签: asp.net internet-explorer-11
IE11 开发人员工具中的网络选项卡显示没有对您的样式表的请求,并且您的<head> 内容被内联呈现。这表明 IE11 不会将内容视为 html(并且不会对其进行解析)。您正在发送带有内容类型的 html,表明它是 xml,但带有 html 文档类型。我会先尝试更改内容类型。
Content-Type: application/xhtml+xml 提供 html4。应该是text/html。<style> 缺少type 属性。<label>。无障碍!<a href="..." /> 中缺少 html 编码。所有与号 (&) 必须编码为 (&)。您还需要适当的 url 编码。<div> 没有 width 属性。<style> 内有一个 <script>。<input> 和两个 value 属性。我正在使用我的高级超级英雄技能来检测您正在使用 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 文件夹(如果缺少,请创建一个新文件)。这个 sn-p 将使用 ecmascriptversion 配置 IE11,用于检测对回发 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>
【讨论】: