首页 > 代码库 > IE内嵌google chrome frame解决浏览器兼容问题

IE内嵌google chrome frame解决浏览器兼容问题

参考文献:

http://www.pseudowired.com/2012/12/04/tomcat-http-header-manipulation/(html中自动添加使用chrome的header)

http://www.baike.com/wiki/Google+Chrome+Frame(google chrome frame介绍)

http://www.cnblogs.com/Libra/archive/2009/03/24/1420731.html

项目背景:

我们的项目中使用了highcharts和svg相关的内容,所以要求至少要IE9才可以,或者使用firefox、chrome等其他浏览器。但是客户是国企,他们使用的都是windows自带的浏览器,普遍是IE7和IE8,有些甚至还是windows xp自带的IE6,让人倍感崩溃。

当时建议客户升级IE版本,升级到至少IE9,但是他们的OA系统支持只IE7跟IE8,这样的事情还真有,我自己公司就是这样子。所以升级的提议被否决。

然后建议客户下载chrome浏览器,但是客户说他们很多人都是访问不了外网的,而且领导们都懒得下载浏览器,太麻烦。

无奈执行我就只能选择以下的解决方案

解决方案:

浏览器判断

在web页面上做浏览器判断,如果浏览器版本低于<=IE8,那么就跳转页面,转到下载chrome浏览器或者下载google chrome frame的页面

<script type="text/javascript">
$(document).ready(function(){
    var bro=$.browser;
    var binfo="";
    if(bro.msie) 
    {
        binfo= "Microsoft Internet Explorer " +bro.version;
        if(eval(parseInt($.browser.version))<9)
        {
              // alert(binfo);
               location.href=http://www.mamicode.com/‘./browser.html‘"Mozilla Firefox "+bro.version;
    }
    if(bro.safari)
    {
        binfo= "Apple Safari "+bro.version;
    }
    if(bro.opera) 
    {
        binfo= "Opera "+bro.version;
    }
   //alert(binfo);
})

</script>

google chrome frame的介绍

在文献2种我们可以大体知道google chrome frame是个什么东西。Google Chrome Frame,官方的正式中文名称为“谷歌浏览器内嵌框架”。Google Chrome Frame是Google推出的一款免费的Internet Explorer专用插件。使用此插件,用户可以通过Internet Explorer的用户界面,以Chrome内核的渲染方式浏览网页。在运行插件之后,IE浏览器将获得Chrome的性能和功能。它将使用Chrome的WebKit 引擎处理网页,另外也支持IE所没有的HTML5等其他技术。

其实是一种挂羊头(IE)卖狗肉(Chrome)的东西,或者说是披着羊皮的狼。但是我们就是需要这匹狼来给我们解决问题。

但是我们在安装完这个插件以后发现,我们使用IE浏览器打开我们的网页,还是给我跳转到下载浏览器界面,我在首页上面使用alter调试,判断当前浏览器发现还是IE8。后来知道如果要是IE启用chrome核心有两种方法:(文献2中有介绍)

  1. 修改注册表,从此以后IE全部使用chrome核心。(与业务需求不符合,客户还指望着使用IE8去访问他们的OA呢)
  2. 在web页面上面添加类似于X-UA-Compatible的标签,主动让IE使用调用chrome核心。(这正是我们当前需要的)
<meta http-equiv="X-UA-Compatible" content="chrome=1">

根据修改,我在自己的web页面上面添加了一下内容,其含义如下:如果当前浏览器版本是<=IE8的,那么给我使用chrome,如果不是,则使用IE。

 <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=IE8">

urlrewritefilter的使用

欢欢欣欣做完以上内容,我想这样我就可以访问自己的网站的了把,可是悲哀的发现,只有首页是使用chrome核心的,其他没有加X-UA-Compatible标签的页面还是使用IE核心。这尼玛太蛋疼了,难道让我找出出所有html页面,然后一个一个手动加上去,这样的事情是人干的吗?想着肯定有人跟我一样碰到同样坑爹的事情,所以就google搜索了一下,最后找到了文献1。看到老外形容IE浏览器的词,suck,fuck,shit,就能看出他是多恨IE了。按照该作者的介绍,我知道了urlrewritefilter,来到他的官方网站,跟着教程去一步一步执行。ok,最后解决问题了。

这个东西的整体思路就是,不管你是发request还是response请求,最后他都会在你的请求页上面加上你设定的内容,我这里设定的内容就是 <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=IE8">。

最后google chrome frame这个东西到2014年就不再官方支持了,官方推荐我们下载最新的google浏览器。不过我想应该不会影响使用。

 

IE内嵌google chrome frame解决浏览器兼容问题