【问题标题】:Site Doesn't Display Correctly in IE11网站在 IE11 中无法正确显示
【发布时间】:2013-10-26 18:12:06
【问题描述】:

我的网站可以在 IE7、IE8、IE9、IE10、所有 PC 和 Mac 版本的 Firefox 和 Chrome、Opera 和 Safari 中正确显示。但是,在 IE11 中,它显示部分标头和 javascript,但不显示 html。有什么想法吗?

http://www.ighome.com

【问题讨论】:

    标签: asp.net internet-explorer-11


    【解决方案1】:

    IE11 开发人员工具中的网络选项卡显示没有对您的样式表的请求,并且您的<head> 内容被内联呈现。这表明 IE11 不会将内容视为 html(并且不会对其进行解析)。您正在发送带有内容类型的 html,表明它是 xml,但带有 html 文档类型。我会先尝试更改内容类型。

    一般变化

    1. 您正在使用 http-header Content-Type: application/xhtml+xml 提供 html4。应该是text/html
    2. Html4 没有自闭合标签。
    3. 您的<style> 缺少type 属性。
    4. 您有内联样式。这是我和可维护性先生之间的个人问题。
    5. 某些输入元素缺少<label>。无障碍!
    6. 您在行内元素中嵌套了一些块元素。这更像是一个验证问题,我没有看到实际上存在此问题的浏览器。
    7. <a href="..." /> 中缺少 html 编码。所有与号 (&) 必须编码为 (&)。您需要适当的 url 编码。
    8. <div> 没有 width 属性。

    具体错误

    1. 第 17-27 行在 <style> 内有一个 <script>
    2. 第 196 行有一个 <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 文件夹(如果缺少,请创建一个新文件)。这个 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>
    

    【讨论】:

    • 谢谢,西蒙。我发现我的 App_Browsers 文件夹中有来自 CodePlex 的 mobile.browser 文件。它导致内容类型被用作 application/xhtml+xml 而不是 text/html。删除后,它的显示与我对 IE 产品的预期一样正确。我正在进行您推荐的其他更改以及一些 CSS 清理工作。感谢您认真回答这个问题。
    • @Mike/@Simon 你用这个完全救了我们。我的团队继承了一个包含 app_browsers/mobile.browser 文件的项目。 (当然未使用)如果西蒙发布问题而迈克发布他为解决问题所做的工作,我们会完全发疯。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2014-01-07
    • 2018-06-13
    • 1970-01-01
    • 2021-11-14
    • 1970-01-01
    • 2019-08-02
    • 2020-05-19
    • 2016-02-27
    相关资源
    最近更新 更多