<meta>指定浏览器模式(browser mode)或文档模式(document mode)无效
这是前两天解决的一个故障,准确的说它不是一个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)无效的更多相关文章
- 网站文档模式总是以Quirks文档模式解析网站
<meta name="renderer" content="webkit"/> <meta http-equiv="X-UA-Co ...
- 浏览器默认解析文档模式IE7
背景:实习期间开发了一套页面,兼容到IE8+,可是在给产品体验时,他的QQ浏览器默认解析到了文档模式IE7,出现了页面的兼容性问题.问题排查:QQ浏览器目前有两个模式,极速模式和兼容模式,其中极速模式 ...
- IE的文档模式, 及Textarea呈现bug一例
做了个非常简单的页面, 仅有几行html代码, 内容如下: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtm ...
- DOCTYPE是什么鬼?文档模式又是什么鬼?
!DOCTYPE !DOCTYPE是什么: 在所有 HTML 文档中规定 DOCTYPE 是非常重要的,这样浏览器就能了解预期的文档类型, 告诉浏览器要通过哪一种规范(文档类型定义 DTD)解析文档( ...
- 全栈JavaScript之路( 二十二 )IE 专有扩展——文档模式
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/hatmore/article/details/37611911 ie8 引入了一个新的概念.&quo ...
- 通过<meta>标签指定IE的文档模式实现CSS3兼容
今天发现之前做好的一个页面在IE中打开显示的效果不正常,本地和服务器上显示的是两种不同的样式. 经过确认文档内容和CSS都是一样的. 通过IE F12(开发人员工具)发现不正常的样式 浏览器文档模式自 ...
- <JavaScript>“浏览器模式”和“文档模式”之间的区别
只有IE浏览器中才会有“浏览器模式”和“文档模式”,兼容性视图涉及两个重要的功能便是“浏览器模式[browser mode]”和“文档模式[document mode]”,在IE8/IE9中按F12键 ...
- 【IE】浏览器模式与文档模式 及其开发中处理方式
原文:http://blog.csdn.net/neo_liu0000/article/details/7589731 什么是浏览器模式和文本模式? 经常使用IE开发者工具的同学,肯定见过浏览器模式和 ...
- 设置IE浏览器文档模式版本
浏览器版本问题是所有开发web的程序员共同的诟病,尤其是IE浏览器,笔者上次修改公司的一个项目中出现项目是在IE9没有出来之前,而现在修改时,则发现页面上出现的表格的错乱(因为表格是通过js动态生成的 ...
随机推荐
- 【Alpha版本】冲刺总结随笔
项目预期计划 确定代码规范与编码原则. 根据原型设计,界面设计,搭建应用大致框架,完善控件,背景等的界面设计. 根据体系结构设计,完善界面跳转逻辑,确定功能模块,实现1.0版本功能. 重点完善需求说明 ...
- 分享一些前端开发中最常用的JS代码片段~ 干货~
http://www.w3cfuns.com/notes/25068/1d0d350a974d879e63f1115cf80a3288.html
- .NET工程师面试宝典
.Net工程师面试笔试宝典 传智播客.Net培训班内部资料 这套面试笔试宝典是传智播客在多年的教学和学生就业指导过程中积累下来的宝贵资料,大部分来自于学员从面试现场带过来的真实笔试面试题,覆盖了主流的 ...
- 使用github pages, hexo搭建个人博客教程
具体的原理性的东西就不说了直接上教程,怕等下自己忘了. 一. github 阶段 申请一个github 账号并成功登录进去. 创建一个名字为xxx.github.io的空项目. 二. hexo 阶段 ...
- Python:设计模式介绍--单例模式
单例模式 1.单例是只有一个实例2.通过静态字段+静态字段伪造出一个单例效果3.什么时候用:当所有实例中封装的数据相同时,创建单例模式(eg:连接池) 用单例模式创建连接池: class CP: __ ...
- java1
1:计算机概述(了解) (1)计算机 (2)计算机硬件 (3)计算机软件 系统软件:window,linux,mac 应用软件:qq,yy,飞秋 (4)软件开发(理解) 软件:是由数据和指令组成的.( ...
- android BitMap回收
第一种方法--及时回收bitmap内存: 一般而言,回收bitmap内存可以用到以下代码 if(bitmap != null && !bitmap.isRecycled()){ bit ...
- 使用微信web开发者工具调试微信企业号页面(前端页面,已发布在服务器上的)
前几天写了一篇使用fiddler调试微信端页面的,然后博友评论说使用fiddler太麻烦了,推荐使用微信web开发者工具调试微信页面,这两天弄着玩了一下,很强大.这篇文章只是做一个记录,方便自己以后使 ...
- HTML:让表单、文本框只读,不可编辑的方法
有时候,我们希望表单中的文本框是只读的,让用户不能修改其中的信息,如使<input type="text" name="input1" value=&qu ...
- 【Java EE 学习 16 下】【dbutils的使用方法】
一.为什么要使用dbutils 使用dbutils可以极大程度的简化代码书写,使得开发进度更快,效率更高 二.dbutils下载地址 http://commons.apache.org/proper/ ...