首页 文章

与在IE8浏览器中以IE7标准模式呈现的相同页面相比,IE7中呈现的页面是否会有任何差异?

提问于
浏览
1

我在页面“X”(父级)的iframe中有一个页面“Y” .

Page X has http header : `X-UA-Compatible   IE=EmulateIE7`
and no meta tag 
and has doctype : `DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"`
Page Y has http header : `X-UA-Compatible   IE=EmulateIE7`
and has meta tag as `meta http-equiv="X-UA-Compatible" content="IE=8"`
and has doctype : `DOCTYPE html`

我看到在IE7浏览器中呈现时在页面Y中存在一些行为差异,与在IE8浏览器中以IE7标准模式呈现的相同页面相比(即浏览器模式:ie8,文档模式:IE7标准模式) .

我试过运行这个js javascript:window.alert('You are in ' + (document.compatMode==='CSS1Compat'?'Standards':'Quirks') + ' mode.') ,它说"Standards mode" .

但由于页面的呈现方式不同,我倾向于认为由于 Headers 不一致而引入了一些古怪的模式 .

我想知道行为差异是否正常,如果是这样,为什么?

PS:根据行为差异,我的意思是,当我将鼠标悬停在jquery网格中的一行时,其中一个td中的图像消失,而在IE7中工作正常 .

1 回答

  • 4

    与在IE8浏览器中以IE7标准模式呈现的相同页面相比,IE7中呈现的页面是否会有任何差异?

    直接回答:是的,会有 . 两者之间存在已知的差异,这就是为什么使用兼容模式进行IE版本测试被认为是一件坏事 .

    问题是"compatibility mode"实际上并没有使用IE7渲染引擎 . 它使用IE8渲染引擎(或者你设计的IE版本看起来相似,但它不是相同的引擎,并且它在所有情况下都不会以相同的方式运行 .

    几年前我在IE8的IE7模式中遇到了一个错误 . 它失去了我们几天的开发人员时间,试图调试它,直到我们弄清楚发生了什么 .

    唯一合理的解决方案是不惜一切代价避免兼容模式 . 将 X-UA-Compatible 标志设置为 IE=edge ;强制所有版本的IE使用其最佳可用模式 .

    兼容模式适用于希望坚持现有代码的网站;谁想要升级他们的IE版本但没有时间修复他们的代码 . 不幸的是,comaptiblity模式中的错误实际上更容易修复代码以使用升级的IE版本 .

    顺便说一下,你在标签中提到了"Quirks mode"问题 . 重要的是要了解你所看到的是 not Quirks模式 . 它可能是古怪的行为,但它基本上不是IE5兼容模式,你真的不喜欢使用有效的doctypes,所以没关系 .

相关问题