我正在开发基于 WebKit 的浏览器,但在 IE 上无法正确呈现 - 仅限网站。有谁知道我可以注入这些页面以使 WebKit 像 IE6 一样呈现的样式表?有点像反ie7-js。
我知道正确的解决方案是使网站符合标准,但这不在我的控制之下。
谢谢
我正在开发基于 WebKit 的浏览器,但在 IE 上无法正确呈现 - 仅限网站。有谁知道我可以注入这些页面以使 WebKit 像 IE6 一样呈现的样式表?有点像反ie7-js。
我知道正确的解决方案是使网站符合标准,但这不在我的控制之下。
谢谢
!DOCTYPE
如果没有指定,一个好的开始是实现 IE 的 Quirks 模式。除此之外,您还可以支持X-UA-Compatible
标题以查看该站点是否是为特定版本的 IE 设计的。
除此之外,你无能为力。由网站所有者决定“嘿,我们实际上希望用户能够使用我们的网站”并实际上使其符合标准。
让 IE6 呈现如此不同的三个主要因素:
您将永远无法(也不应该)尝试在较新的浏览器中复制 IE6 的错误。IE6 的 bug 堪称传奇。无论如何,您可能有技巧和变通方法来处理它们,但很高兴您正在继续前进并远离它们。
IE 缺少的功能对您来说应该不是问题,因为您的代码不会使用它们。没什么可担心的。显然,如果您为较新的浏览器编写站点,但不是为您编写的站点,这将是一个问题。
您要担心的这三个要点是第三个:与其他浏览器相比,Quirks 模式是真正破坏旧版本 IE 中页面呈现的模式。
<!DOCTYPE>
正确的解决方案是在页面顶部使用有效的。IE 将进入标准模式,并将呈现与所有其他浏览器相同的内容。如果您的页面是为 quirks 模式设计的,那么您可能必须对其进行修复,但这可能是正确的做法,并且至少渲染模式在所有浏览器之间是一致的。
一个好的文档类型是!<DOCTYPE html>
.
如果您不指定 doctype,那么您将遇到很多兼容性问题。
有一个快速的出路:有一个名为box-sizing: border-box
. 如果您在您的站点中设置此 CSS 属性,那么 Webkit 和其他浏览器将切换到呈现与 IE 的怪癖模式相同的框。
这听起来像是一个理想的解决方案,也是对您问题的直接回答,那么问题是什么?与往常一样,问题是 IE。尝试在box-sizing
不修复问题的情况下使用 CSS<!DOCTYPE>
仍然会给您留下不兼容的区域,如果您确实修复了<!DOCTYPE>
,那么 IE6 将根本不会以怪癖模式呈现。它应该是解决方案,但实际上,box-sizing
仍然会给您留下需要解决的问题。
所以我再说一遍,正确的解决方案是添加一个<!DOCTYPE>
,修复您的网站并继续前进,而不是试图向后拉其他浏览器。