`
kroll01
  • 浏览: 20740 次
  • 性别: Icon_minigender_1
  • 来自: 花果山
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

“IE7中下拉框显示不全”问题的原因与解决方案

阅读更多
最初发现遇到“IE7中下拉框显示不全”这个问题时,一直以为是由于IE7的浏览器的兼容问题,并未找到这个问题的解决方案。但是开发应用系统过程中,不少用户都反应使用IE7浏览器时,出现下拉框显示不完整的情况。随着IE7不断的普及,会有更多的用户遇到同样的问题,所以这个问题必须解决,问题是怎么解决,问题出在哪里?
   查找了几天,查看jsp是否哪里写错了,但是并未找到结果。后来安装了IE7浏览器后,在本地重现了一下,部分下拉框还是出现缺失的现象,我突然发现有的页面下拉框是完整的,而有的页面是缺失的,难道页面有什么区别?我仔细比较了一下完整显示下拉框和缺失显示下拉框的页面,发现它们的区别在于页面声明的部分"<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">",难道是IE7不支持该标签,或者说该标签在IE7浏览器已经过时了?我删除该标签后,验证了一下,确实问题是出在这里。

在网上收集整理了一些IE6和IE7关于CSS兼容表现的资料
JSP的DOCTYPE声明说明:
  html
  PUBLIC
  "-// W3C// DTD
  HTML 4.01 Transitional// EN"   "http://www.w3.org/TR/html4/loose.dtd">
  (1) (2) (3) (4) (5) (6) (7) (8)

  [Top Element]   [Availability]   "[Registration]// [Organization]// [Type]   [Label]// [Language]"   "[URL]">
  (1) (2) (3) (4) (5) (6) (7) (8)

(1) Top Element: DTD中声明的最顶层元素,例如html。
(2) Availability: 指示标识符是公共标识符号(PUBLIC)还是系统资源(SYSTEM),例如本地文件、url等。
(3) Registration: 指示组织是否注册为ISO成员,+表示已经注册为ISO成员,-表示没有注册。W3C没有注册,所以使用-。
(4) organization: 对于HTML、XHTML而言指维护DTD的组织标识符,W3C。
(5) Type: Public Text Class,引用对象的类型,对于HTML、XHTML而言为DTD。
(6) Label: Public Text Description,引用内容的唯一名称描述,Label里面可以包含一个版本号(4.01),可以包含一个Defintion(有三种Definition: Frameset, Strict, Transitional,下面会描述)。
(7) Language: 语言代码。
(8) URL: 引用DTD的url。
各个浏览器对HTML、CSS的处理,在细节上存在很多差异,为了向W3C标准靠近,并且HTML、CSS的标准也在不断的发展,因此同一个浏览器的不同版本之间,也会存在细节处理上的不一致性。现在浏览器使用DOCTYPE声明来决定该使用那种模式处理HTML、CSS,通常提到的有standards mode(标准模式,strict Mode)和quirks mode(兼容模式compliant mode)。标准模式指浏览器采用尽量靠近目前W3C规范的方式,支持目前版本的HTML、XHTML、CSS规范;兼容模式指浏览器按照以前的老版本的方式处理,以兼容那些旧版本的web应用。另外需要注意的是,虽然目前主要的浏览器都支持这两种模式,但都有差别,例如Firefox除了上面两种模式外,还有一个almost standards mode。
下面是HTML 4.01的DTD,分别为Strict, Transitional, Frameset

IE 6 CSS增强、IE 7 CSS兼容性
References: Cascading Style Sheet Compatibility in Internet Explorer 7、 CSS Enhancements in Internet Explorer 6
Label中的Definition三种类型:Frameset,支持FRAMESET文档;Transitional,支持除了FRAMESET以外其它所有元素;Strict,不支持W3C准备淘汰的元素、属性。这种描述有点让人糊涂,也无法跟标准standards mode、quirks mode对应上,至于具体的定义可以参考W3C标准。

下面这个表格是比较有用的:
Label                      Definition         URL present         URL not present
No !DOCTYPE present                             Off                    Off
HTML (No Version Present)                        Off                    Off
HTML 2.0                                         Off                    Off
HTML 3.0                                         Off                    Off
HTML 3.2                                         Off                    Off
HTML 4.0                 No Definition Present   On                     On
HTML 4.0                 Frameset                On                     Off
HTML 4.0                 Transitional            On                     Off
HTML 4.0                 Strict                  On                     On
XHTML                                            On                     On
XML                                              On                     On
Unrecognized !DOCTYPE                            On                     On


其中On表示使用strict mode(standards mode),Off表示使用compliant mode(quirks mode)。URL present/URL not present表示DTD文档的url是否有在DOCTYPE中声明;Definition为空或者No Definition Present表示Definition没有定义。从IE 6开始支持这两种模式的切换,在strict mode下,IE尽量保持与W3C标准一致,而compliant mode下,IE将保持与以前的IE版本兼容。用这个表格,对照1中几种DOCTYPE可以知道,只有在strict mode下,IE 7才支持filter:progid:DXImageTransform.Microsoft.Alpha这个滤镜。让人奇怪的是,也只有在strict mode下,IE 7才支持filter: alpha(opacity=60),compliant mode下是不支持的,而这个写法是针对IE 5.5之前版本的。
在strict mode下面,两个比较重要的差异点:
a) Box的height、width计算问题



CSS标准中,width、height指图中Content的宽度、高度,而IE在计算宽度、高度时,将包括padding、border
分享到:
评论

相关推荐

    IE浏览器下拉框出现乱码的问题

    在Internet Explorer(IE)浏览器中,如果用户在下拉框(Dropdown List)中看到的内容显示为乱码,这通常是因为字符编码不匹配或浏览器不支持某些特殊字符集所导致的。IE浏览器,特别是较旧的版本,对于Unicode和...

    下拉多选组件sumoselect,兼容IE8

    总的来说,SumoSelect是针对IE8多选下拉框问题的一个高效解决方案。它的出现弥补了旧版浏览器与现代组件之间的鸿沟,让开发者能够在不牺牲用户体验的前提下,轻松实现多选下拉功能。无论是对于个人开发者还是团队,...

    基于jquery带搜索功能的下拉框,兼容IE5/6/7/8/9/10

    尽管这个组件不支持Edge浏览器,但考虑到Edge已经不再支持 Trident 引擎,而是转向了Chromium内核,对于新的浏览器版本,开发者可以使用原生的HTML5 `&lt;datalist&gt;`元素或者更现代的解决方案,如Select2、Selectize等...

    jQuery解决下拉框select设宽度时IE 6/7/8下option超出显示不全

    总结来说,jQuery提供了一种通过动态调整宽度来解决IE 6/7/8下下拉框select选项显示不全的问题。开发者可以根据具体项目需求,结合这个解决方案进行适当的修改和优化,以确保在各种浏览器环境下提供良好的用户体验。

    级联下拉框(支持火狐和IE)

    本示例可能是一个自定义解决方案,尽管它可能不是完美的类库,但能适用于火狐和IE这两种浏览器,这是相当重要的,因为早期的IE浏览器对某些现代Web技术支持不足。 1. **HTML结构**:级联下拉框的基础是...

    IE6下拉框图层问题探讨及解决

    此外,对于现代浏览器,我们可以依赖更好的CSS解决方案,如使用`z-index`配合`position`属性来控制元素的堆叠顺序,但这在IE6中并不奏效。因此,在需要支持IE6的项目中,`bgiframe`插件是一个必不可少的工具。 总之...

    带模糊搜索的树状下拉框

    虽然现代浏览器大多支持上述提到的JavaScript API和CSS特性,但老版本的IE可能不支持。因此,可能需要引入polyfills(如`es6-shim`)或者使用jQuery等库来提供向后兼容。同时,确保CSS使用较旧的语法或者通过...

    火狐 IE js脚本库【可查找下拉框】【无限级菜单】【加强日历】

    本资源“火狐 IE js脚本库【可查找下拉框】【无限级菜单】【加强日历】”提供了针对Firefox(火狐)和Internet Explorer(IE)浏览器的JavaScript解决方案,旨在提升用户界面的易用性和功能性。 首先,我们来详细...

    解决IE6中 Div层挡不住Select组件

    在IT行业中,尤其是在前端开发领域,我们经常遇到与浏览器兼容性相关的问题,特别是涉及到老旧的Internet Explorer(如IE6)时。"解决IE6中 Div层挡不住Select组件"这个问题是一个典型的例子,它反映了IE6在CSS层叠...

    多选下拉框

    总结一下,这个多选下拉框解决方案利用了jQuery库,通过`jquery.multiSelect.js`脚本提供多选功能,并使用`jquery.multiSelect.css`来定制视觉样式。文件中的图形资源和HTML示例页面则确保了良好的用户体验和可操作...

    超级仿百度 自动搜索提示下拉框

    ”这表明这个功能不仅是一个示例,而且是一个可以直接在实际项目中使用的成熟解决方案。开发者可以轻松地将它集成到自己的网站或应用中,提高搜索功能的效率和用户体验。 标签“自动搜索”、“提示框”、“ie6”、...

    CSS+jQuery简单实现select下拉框.zip

    在网页设计中,选择框(select)是一种常见的交互元素,用于让用户从预设的选项中进行选择。...对于前端开发者来说,这样的解决方案不仅可以提升用户体验,还能在保持代码简洁的同时,增加网页设计的灵活性和可定制性。

    IE下background背景图片无法显示问题解决方法

    PNG图片是通过Alpha通道来实现透明效果的,而早期IE浏览器无法正确地渲染这种透明效果,有时会导致图片显示不全或完全不显示。然而,GIF格式的图片则不存在这样的问题,因为GIF是通过索引来实现简单透明效果的,且它...

    jQuery结合UL标签下拉框美化.zip

    本主题“jQuery结合UL标签下拉框美化”就是针对这一需求提出的一种解决方案。它摒弃了传统的`&lt;select&gt;`标签,转而采用`&lt;ul&gt;`和`&lt;input&gt;`标签组合,来实现一个具有美观效果且功能齐全的下拉选择器。 首先,`&lt;select&gt;...

    select2兼容ie8版本的js css zh-cn.js

    《关于Select2在IE8及更高版本中的兼容性与应用》 在Web开发过程中,兼容性问题始终是一个棘手的问题,尤其是对于那些老旧但仍然被广泛使用的浏览器,如Internet Explorer 8 (IE8)。Select2,作为一个强大的下拉框...

    jQuery Bootstrap和chosen集成下拉框插件特效.zip

    《jQuery、Bootstrap与Chosen:打造高效下拉框插件特效》 在现代网页开发中,用户界面的交互性和美观性成为了吸引用户的关键因素之一。...在不断迭代的前端技术中,这种集成方式无疑是一种高效而实用的解决方案。

    在IE6中浮动层遮盖不住select的方法

    浮动层(通常通过CSS的`position: absolute`或`position: fixed`实现)常用于创建弹出窗口、提示信息等,但当浮动层与页面中的`&lt;select&gt;`下拉框重叠时,IE6往往无法正常遮盖住下拉框,导致交互体验不佳。 这个问题...

    原生js form表单美化插件表单元素input select下拉框

    在网页开发中,表单(Form)是用户与网站交互的重要组成部分,用于收集用户输入的信息。原生JavaScript作为Web开发的基础,...在实际开发中,还可以参考现有的开源库,它们提供了更多高级特性和开箱即用的解决方案。

    select2_ie8.rar

    针对这些错误,我们可以逐步调试,或者寻找社区中已有的解决方案。例如,如果是因为某个方法或属性在IE8中不存在导致的,我们可以使用条件注释或Modernizr这样的工具来检测浏览器特性,并根据结果采取不同的实现策略...

    select 去样式美化(完美兼容)

    "select去样式美化(完美兼容)"是一个针对这个问题的解决方案,它旨在提供一种方法,通过使用`div`元素替代`select`结构,以实现更统一、更易于控制的样式效果,同时保证跨浏览器的兼容性。 这个程序的核心思想是...

Global site tag (gtag.js) - Google Analytics