今天项目组的同事反映,在IE浏览器下,所有用easyui编写的tab控件都加载不出来,只会显示一个Loading的提示在控件的内容显示区。

刚分析这个问题,首先怀疑是使用easyui的tab的脚本写法哪里不对了,于是改了好几遍别的写法,甚至直接使用html标签的形式加载tab控件,都还是出现一样的问题,在ie下就是加载不出来,chrome等浏览器都是正常的;后来想可能是受到别的地方有什么脚本的影响,或者是源代码哪里出问题了,于是将一个运行正常的项目的相关前段代码拿过来全部替换,但是发现依然不行,之后我又将有问题的项目中的加载tab控件的代码所在的文件放到正常的项目中运行,发现也是正常的,这下就非常奇怪了,等于2个项目的前段代码一模一样,但是tab控件的渲染在其中一个项目里就是不行,而且是在该项目里的所有使用了tab控件的地方都有问题。这时项目组的同事突然说了一句:“我好像也改了一下filter中的东西,但是那个是后台的代码,怎么也不会影响到前台的easyui的脚本解析吧?”,我想了一下当时也觉得不会影响,但是实在没有别的思路了,就死马当活马医,试试看呗,于是将filter中修改的代码注释掉,在运行代码,结果发现问题没有了,tab控件正常加载!

好奇怪啊,filter中能有什么东西会导致easyui的tab控件仅仅在ie下加载失败呢?

后来细细想了一下,也查询了相关资料,终于得出了答案:

filter中的那段配置代码的内容是使用spring的CharacterEncodingFilter类对请求进行UTF8的编码,并且配置了forceEncoding的值为true,而且过滤所有的请求,该编码配置的意思是对所有请求采用utf8编码,由于配置了forceEncoding的值为true,对所有的响应也会采用utf8编码。

细心的朋友可能已经发现,这里写的是utf8而不是utf-8,没错IE浏览器是不认识utf8的,它只认识utf-8,但是chrome等浏览器是认识utf8的。

那问题又来了,如果是这个原因,为什么只有加载easyui的tab控件的时候会出问题,应该是加载所有html页面都会出问题啊?

原因是这样的,easyui的tab控件中加载的内容也是一个html,但是这个html的内容要求只能写<body></body>里的标签,所以该html页面上不能指定charset=UTF-8,而其它正常的html页面都会在<meta>标签中加入这个属性,当IE浏览器解析response头中的内容准备使用utf8来解析页面的时候,如果发现meta中也配置了charset,那么就会使用meta中的编码,如果没有发现该配置,就使用response头中content-type的charset指定的编码,所以就导致了easyui的tab控件仅仅在ie下加载失败的问题。

由easyui的tab在ie下渲染失败,发现的一个有意义的问题的更多相关文章

  1. 关于easyui的tab,layout,datagrid嵌套的问题

    我的项目使用easyui作为前台的展示框架现在页面中是一个layout布局(分上,左,中)在左边是一些菜单,点击后,在中间部分增加一个tab显示内容而增加的tab里面是显示一些列表数据,列表上面是查询 ...

  2. 雷林鹏分享:jQuery EasyUI 表单 - 创建树形下拉框

    jQuery EasyUI 表单 - 创建树形下拉框 树形下拉框(ComboTree)是一个带有下列树形结构(Tree)的下拉框(ComboBox).它可以作为一个表单字段进行使用,可以提交给远程服务 ...

  3. easyui的tab加载页面中的form重复提交

    http://blog.csdn.net/fxz1982/article/details/8987769 Easyui中的tabs组件以href方式加载目标页面,如果目标页面中有dialog或者win ...

  4. JQuery Easyui/TopJUI 创建多级联动下拉框(纯HTML实现!!!)

    JQuery Easyui/TopJUI 创建多级联动下拉框(纯HTML实现!!!) 效果展示: 代码如下: <form data-toggle="topjui-form"& ...

  5. easyui中Tab的tools按钮刷新当前tab

    easyui中Tab的tools按钮刷新当前tab 点击刷新按钮,刷新当前Tab选项卡. $('#index_tabs').tabs({ fit : true, border : false, too ...

  6. jquery Tab默认情况下自动切换

    <!DOCTYPE html><html lang="zh-CN"><head><meta http-equiv="Conten ...

  7. 第二百二十七节,jQuery EasyUI,ComboTree(树型下拉框)组件

    jQuery EasyUI,ComboTree(树型下拉框)组件 学习要点: 1.加载方式 2.属性列表 3.方法列表 本节课重点了解EasyUI中ComboTree(树型下拉框)组件的使用方法,这个 ...

  8. 第二百二十四节,jQuery EasyUI,ComboGrid(数据表格下拉框)组件

    jQuery EasyUI,ComboGrid(数据表格下拉框)组件 学习要点: 1.加载方式 2.属性列表 3.方法列表 本节课重点了解 EasyUI 中 ComboGrid(数据表格下拉框)组件的 ...

  9. EasyUI:年份、月份下拉框Demo

    EasyUI:年份.月份下拉框Demo jsp中定义: <td width="10%" height="25px" style="text-al ...

随机推荐

  1. 在 SQL Server 中查询EXCEL 表中的数据遇到的各种问题

    SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="D:\KK.xls";User ID=A ...

  2. Android自动化压力测试之Monkey Test (三)

    Monkey 是什么? Monkey是Google提供的一个用于稳定性与压力测试的命令行工具. Monkey路径: 路径:/System/framework/monkey.jar 启动脚本路径:/sy ...

  3. 第一个vs2013控制台程序

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  4. LoadRunner测试场景中添加负载生成器

    如何在LoadRunner测试场景中添加负载生成器 本文对如何在LoadRunner的测试场景中添加负载生成器,如何使用负载生成器的方法,总结形成操作指导手册,以指导测试人员指导开展相关工作. 1.什 ...

  5. background为圆角的表框,dp转Px,Px转dp

    圆角边框<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="ht ...

  6. 分数try catch

    要求:编写一个程序,此程序在运行时要求用户输入一个 整数,代表某门课的考试成绩,程序接着给出“不及格”.“及格”.“中”.“良”.“优”的结论.要求程序必须具备足够的健壮性,不管用户输入什 么样的内容 ...

  7. JS实现有点炫的图片展示效果-图片解体和组合

    经过4个月的努力学习,迎来了进入市场的最后一个学习项目.自己模仿了一个图片展示效果,用在了项目中,感觉挺炫的.在这里分享一下,希望大家喜欢~! bomb-showImg : 在线演示http://ru ...

  8. 学习 Message(5): 关于 TApplicationEvents.OnMessage 的第二个参数 可以屏蔽 TWebBrowser右键菜单:

    http://www.cnblogs.com/del/archive/2008/10/25/1319318.html TApplicationEvents.OnMessage 的第二个参数 Handl ...

  9. Floyd_Warshall POJ 1847 Tram

    题目传送门 题意:这题题目难懂.问题是A到B最少要转换几次城市.告诉每个城市相连的关系图,默认与第一个之间相连,就是不用转换,其余都要转换. 分析:把第一个城市权值设为0, 其余设为0.然后Floyd ...

  10. git 学习笔记2--How to create/clone a repository

    1. create/clone 1.1 create 针对已经存在的目录创建一个repository,使用以下命令: git init Initialized empty Git repository ...