<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版本】冲刺-Day5
队伍:606notconnected 会议时间:11月13日 会议总结 张斯巍(433) 今天安排:完成昨天没完成的,设置界面设计 完成度:85% 明天计划:学习UI设计 遇到的问题:无 感想:一定要 ...
- UVA2322
题目:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_pr ...
- render()方法是render_to_response
自django1.3开始:render()方法是render_to_response的一个崭新的快捷方式, 前者会自动使用 RequestContext.而后者必须coding 出来,这是最明显的区别 ...
- WORDPRESS点击标题或图片无法链接到文章页面
在设置出更改固定连接设置
- jQuery视差滚动插件,(附原理分析,调用方法)
演示地址:http://www.jq22.com/jquery-info1799 jquery插件,使用验证过可用. 分析源代码后总结原理:设置background样式为fixed,判断浏览器滚动距离 ...
- UILocalNotification本地通知的使用方法
本文所写方法主要应用UILocalNotification达到本地推送通知栏信息 取消了其他教程里过期的UIAlertView方法 使用UILocalNotification主要分为创建 调用 取消 ...
- Python: Win7下使用 pip install lxml 无法安装lxml?
1.在网址 http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml 下,搜索lxml,下载Python对应的lxml版本.如下图: 2.打开cmd,进入到lxm ...
- Spring的测试
spring测试要引用junit及spring-test <dependency> <groupId>junit</groupId> <artifactId& ...
- 【XLL 框架库函数】 TempActiveRow/TempActiveRow12
创建一个包含所有激活工作表行的 XLOPER/XLOPER12 LPXLOPER TempActiveRow(WORD row); LPXLOPER12 TempActiveRow12(ROW row ...
- bzoj4260
题目大意:求不相交的两段区间,两段的异或和加起来最大是多少 区间异或和记得转化成前缀和啊我个sb 变成一对数的异或值就变成trie了啊 两段区间的话,从左往右一颗trie,从右往左一颗trie #in ...