惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Threatpost
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
S
Security Affairs
N
News and Events Feed by Topic
T
Tenable Blog
P
Proofpoint News Feed
W
WeLiveSecurity
Simon Willison's Weblog
Simon Willison's Weblog
Google DeepMind News
Google DeepMind News
C
CERT Recently Published Vulnerability Notes
Help Net Security
Help Net Security
I
Intezer
T
Threat Research - Cisco Blogs
S
Secure Thoughts
C
Cyber Attacks, Cyber Crime and Cyber Security
L
Lohrmann on Cybersecurity
AWS News Blog
AWS News Blog
Google Online Security Blog
Google Online Security Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Know Your Adversary
Know Your Adversary
Project Zero
Project Zero
The Hacker News
The Hacker News
Security Archives - TechRepublic
Security Archives - TechRepublic
T
Tor Project blog
N
News | PayPal Newsroom
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Hacker News - Newest:
Hacker News - Newest: "LLM"
A
Arctic Wolf
Forbes - Security
Forbes - Security
O
OpenAI News
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Security Latest
Security Latest
P
Palo Alto Networks Blog
S
Schneier on Security
S
Securelist
C
Cybersecurity and Infrastructure Security Agency CISA
H
Heimdal Security Blog
V
Vulnerabilities – Threatpost
www.infosecurity-magazine.com
www.infosecurity-magazine.com
博客园_首页
T
Troy Hunt's Blog
Latest news
Latest news
Recent Announcements
Recent Announcements
MyScale Blog
MyScale Blog
人人都是产品经理
人人都是产品经理
L
LINUX DO - 热门话题
M
MIT News - Artificial intelligence
N
Netflix TechBlog - Medium
V
Visual Studio Blog
H
Hacker News: Front Page

博客园 - 流浪浪

使用递归的方法生产TreeView SQL截取字符串 SQL Server中各个系统表的作用 editor.js 缺少对象的解决方法(ewebeditor 使用) asp.net DataList中hyperlink传递参数及打开新页面全解 vs2005 c#鼠标悬停高亮显示在gridview中 li:hover ul,li.over ul{ display: block;}这句被ie6.0解释不了 CSS + JavaScript 利用display:none/block 构造弹出菜单 23种设计模式的通俗理解 myeclipse9.0破解方法 C#弹出选择对话框的程序 sql语句中调用将汉字转换为拼音函数 sql将汉字首字转化为拼音 sql语句获取本周、本月数据 解决gridview导出到excel中汉字出现乱码的问题 - 流浪浪 - 博客园 (转)IT人士群聚喝酒 Better Man 倒春寒 恨铁不成钢啊!
“IE7中Frameset页面显示不全”问题的原因与解决方案 (转)
流浪浪 · 2009-10-14 · via 博客园 - 流浪浪

最初发现遇到“IEFrameset页面显示不全”这个问题时,一直以为是由于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