在IE9中忽略内部iframe中的EmulateIE8

时间:2013-07-12 21:08:15

标签: html internet-explorer browser ie8-compatibility-mode x-ua-compatible

我试图通过iframe在旧页面中嵌入一个“新”样式页面,但在IE9中,当页面加载到iframe中时,border-radius之类的东西仍然没有效果。当页面单独加载时,圆角和效果看起来很好,但是当在iframe中时,css属性似乎被忽略。

最初我认为这是DOCTYPE继承问题,但它们都是<!DOCTYPE html>(外页和内页)。接下来,我相信它是内部iframe继承的content="IE=Emulate8"。当然,这是一种理论。如果这是一个不正确的理论,请告诉我。 :)

无论如何,这是页面的一个例子:

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta content="IE=EmulateIE8" http-equiv="X-UA-Compatible">
</head>
<body>
    ... stuff...
    <iframe>
        <!DOCTYPE html>
        <html lang="en">
        <head>
            <meta charset="utf-8">
            <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
            <meta name="viewport" content="width=device-width,initial-scale=1">
        </head>
        </html>
    </iframe>
</body>
</html>

其中一些可能并不真实。无论如何,我的问题是:如果EmulateIE8是为什么像border-radius这样的css属性在IE9下的iframe中不起作用的罪魁祸首,是否可以覆盖它或在内部iframe中禁用它?

请注意:遗憾的是,在不改变整个应用程序框架的情况下更改iframe外部的内容很困难(遗留应用程序*叹气*)。我试图在遗留应用程序中添加一些更现代的东西。

1 个答案:

答案 0 :(得分:4)

如上所述here: 从IE9模式开始,网页无法显示多种文档模式。例如,考虑一个基于标准的网页,其中包含以怪异模式显示内容的框架元素。 IE9模式以标准模式显示子帧(因为父文档处于标准模式)。但是,从Internet Explorer 10开始,子帧可以模拟怪异模式。有关详细信息,请参阅IE10中的IEBlog:HTML5 Quirks模式。但是,为了获得最佳效果,请始终使用文档模式。