这是前两天解决的一个故障,准确的说它不是一个SharePoint的问题,而是IE8浏览器或者说是HTML代码的问题,但我感觉还是挺有意思的,所以贴上来分享一下。

基础知识

简单的讲,就是IE浏览器中有两个模式设定,一个是“浏览器模式”(Browsers Mode),一个是“文档模式”(Document Mode)。

浏览器模式”用于切换IE针对该网页的默认文档模式、对不同版本浏览器的条件备注解析、发送给网站服务器的用户代理(User-Agent)字符串的值。网站可以根据浏览器返回的不同用户代理字符串判断浏览器的版本和安装的功能,这样就可以向不同的浏览器返回不同的页面内容。

文档模式”用于指定IE的页面排版引擎(Trident)以哪个版本的方式来解析并渲染网页代码。切换文档模式会导致网页被刷新,但不会更改用户代理字符串中的版本号,也不会从服务器重新下载网页。切换浏览器模式的同时,浏览器也会自动切换到相应的文档模式。

一般来讲,用户可以通过F12工具自行调整这两种模式。但通常来讲,开发人员会通过在HTML代码里写入下面这行<meta>标签来直接指定最适合该页面的模式以防止出现不必要的异常, 比如js错误.

<meta http-equiv="X-UA-Compatible" content="IE=8"/>

故障描述

这次的故障是我们的站点虽然都统一通过<meta>指定了文档模式为IE8 Standards, 但在有些页面却不起作用, 文档模式变成了IE7Standards, 于是这些页面报出了JavaScript Error.

JS Error的原因我顺便提一句, 是因为我们的js代码中用了JSON.parse()语句,这句话在IE7Standards中却不能识别。一个临时的解决方法是把这句话用jQuery.parseJSON替换,但显然这等于是用了更旧的方法,不是个好主意。最好的解决方法还是找到为什么<meta>不起作用了。

经过排查源代码,发现了共性。

凡是出问题的页面,<meta http-equiv="X-UA-Compatible" content="IE=8"/>这句话都不是紧随<title>标签之后的第一句话,前面被莫名其妙插入了很多javascript引用。

而相反的, 在没有问题的页面里,<meta http-equiv="X-UA-Compatible" content="IE=8"/>都是紧随在<title>标签后的。

解决方法

然后经过搜索发现了这篇帖子http://stackoverflow.com/questions/13519696/mvc-app-causing-ie9-to-use-older-standards/13524518#13524518 里面提到<meta http-equiv="X-UA-Compatible" content="IE=8"/>必须紧随<title>才可以生效。那么换句话说,你只有想办法把<meta>之前的那些引用去掉才可以。在我环境中,那些引用是因为一个新安装的插件导致的,卸载掉之后这个问题就解决了。

但很可能在你的SharePoint里这个问题不能这样解决的话,还有一个方法也可以起到作用,那就是在SharePoint的web.config里面来指定文档模式和浏览器模式,这样等于有了双保险,万一页面上的<meta>不起作用,web.config就会起作用。做法如下图:

<meta>指定浏览器模式(browser mode)或文档模式(document mode)无效的更多相关文章

  1. 网站文档模式总是以Quirks文档模式解析网站

    <meta name="renderer" content="webkit"/> <meta http-equiv="X-UA-Co ...

  2. 浏览器默认解析文档模式IE7

    背景:实习期间开发了一套页面,兼容到IE8+,可是在给产品体验时,他的QQ浏览器默认解析到了文档模式IE7,出现了页面的兼容性问题.问题排查:QQ浏览器目前有两个模式,极速模式和兼容模式,其中极速模式 ...

  3. IE的文档模式, 及Textarea呈现bug一例

    做了个非常简单的页面, 仅有几行html代码, 内容如下: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtm ...

  4. DOCTYPE是什么鬼?文档模式又是什么鬼?

    !DOCTYPE !DOCTYPE是什么: 在所有 HTML 文档中规定 DOCTYPE 是非常重要的,这样浏览器就能了解预期的文档类型, 告诉浏览器要通过哪一种规范(文档类型定义 DTD)解析文档( ...

  5. 全栈JavaScript之路( 二十二 )IE 专有扩展——文档模式

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/hatmore/article/details/37611911 ie8 引入了一个新的概念.&quo ...

  6. 通过<meta>标签指定IE的文档模式实现CSS3兼容

    今天发现之前做好的一个页面在IE中打开显示的效果不正常,本地和服务器上显示的是两种不同的样式. 经过确认文档内容和CSS都是一样的. 通过IE F12(开发人员工具)发现不正常的样式 浏览器文档模式自 ...

  7. <JavaScript>“浏览器模式”和“文档模式”之间的区别

    只有IE浏览器中才会有“浏览器模式”和“文档模式”,兼容性视图涉及两个重要的功能便是“浏览器模式[browser mode]”和“文档模式[document mode]”,在IE8/IE9中按F12键 ...

  8. 【IE】浏览器模式与文档模式 及其开发中处理方式

    原文:http://blog.csdn.net/neo_liu0000/article/details/7589731 什么是浏览器模式和文本模式? 经常使用IE开发者工具的同学,肯定见过浏览器模式和 ...

  9. 设置IE浏览器文档模式版本

    浏览器版本问题是所有开发web的程序员共同的诟病,尤其是IE浏览器,笔者上次修改公司的一个项目中出现项目是在IE9没有出来之前,而现在修改时,则发现页面上出现的表格的错乱(因为表格是通过js动态生成的 ...

随机推荐

  1. 【重点】Shell入门教程:流程控制(3)条件判断式的真假值

    之前曾提到,在Bash中什么是真什么是假,是以命令的结束状态是否为0来做判断.传回0,即为真:传回非0,即为假. 在Bash中,这种可以影响程序流程的式子,称为条件判断式.判断式的操作数分成“单元”及 ...

  2. 聊聊Azure的安全性

    本来没打算写这篇博文,毕竟感觉太理论化,不像做技术的人应该写的东西,但是作为一名售前,发现很多不了解Azure的客户,上来的第一个问题竟然就是Azure如何保证客户数据的安全性,我清楚记得我第一次被问 ...

  3. saltstack(主机改名)

    已存在salt中的机器,为了规范,需要将这批主机改名 操作流程:在master把这批机器剔除:然修改这批机器的主机名.在/etc/salt目录下.用mv把minion_id和pki的目录重命名.重启s ...

  4. python匹配ip正则

    python匹配ip正则 #!/usr/bin/env python # -*- coding:utf-8 -*- import re ip_str = "asdad1.1.1.1sdfwe ...

  5. python之路六

    面向对象 引言 提到面向对象,总是离不开几个重要的术语:多态(Polymorphism),继承(Inheritance)和封装(Encapsulation).Python也是一种支持OOP的动态语言, ...

  6. Flask 吐血400错误

    的确地址或者method不匹配,这个容易解决 在后端中取到了form中不存在的元素! 这个很麻烦,特别form里面的信息比较多时!这个需要一一排查.另外取元素时最好用 request.form.get ...

  7. Burpsuite+sqlmap批量扫描sql漏洞

    1.burpsuite设置导出log n'd'k 输入文件名保存 2.sqlmap批量扫描     python sqlmap.py -l 文件名 --batch -smart     batch:自 ...

  8. JavaScript 加载动画Canvas 设计

    var c = document.getElementById('c'), ctx = c.getContext('2d'), cw = c.width = 400, ch = c.height = ...

  9. iOS9 新功能:Support Universal Links

    先看官方文档:https://developer.apple.com/library/ios/documentation/General/Conceptual/AppSearch/UniversalL ...

  10. qt creator 源代码中含有中文编译报错

    Tools-Options-Text Editor-Behavior-File Encoding-Default encoding:UTF-8 Tools-Options-Text Editor-Be ...