在使用IE=EmulateIE7的页面中,尝试在一个iframe中使用IE=edge X-UA-Compatible。

28

我有一个页面将被包含在一个iframe中,这个iframe将会被用在另一个页面中,那个页面使用以下代码:

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"/>

我希望能够在用户使用的浏览器中以最新的标准模式呈现我的页面。这是否可能?

我已经尝试包含

<meta http-equiv="X-UA-Compatible" content="IE=edge"/>

在我的页面上,我需要更改我的Web应用程序以包含值为“IE=edge”的“X-UA-Compatible”HTTP标头,但似乎无法实现我想要的效果。
奇怪的是,例如,如果我有两个页面,第一个包含iframe,另一个是在iframe中显示的内容,就像这样:
<!doctype html>
<html>
<head>
    <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"/>
    <script>
        console.log("Page document mode: "+document.documentMode);
    </script> 
</head>  
<body>
<iframe src="iframepage.html" /> 
</body>
</html>

并且

<!doctype html>
<html>
<head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <script>
        console.log("Iframe document mode: "+document.documentMode);
    </script> 
</head>
<body>
</body>
</html>

输出结果比较出人意料。
Page document mode: 7
Iframe document mode: 8

文档模式8从哪里来?我如何将iframe文档转换为9或更高版本?

如果有人能指点我正确的方向,我将永远感激不尽!谢谢,Nick


1
我有完全相同的问题。你找到解决方案了吗? - Pierre Henry
很遗憾,我恐怕不行。 - eldoctoro
只是猜测,但可以尝试的几件事情是:1)将IE设置为9而不是edge;2)使用X-UA-Compatible http头,而不是meta标签。 - Nathan Stretch
1个回答

22

IE不允许在框架层次结构中混合使用IE9+和旧版本模式。如果您的顶级文档是IE7,则任何内部文档中的最高版本都是IE8。同样,您将无法在IE9模式页面中托管除IE9模式文档以外的任何内容。


2
看起来,反过来混合模式也是可能的:主页面使用标准模式,框架使用兼容模式:https://dev59.com/7GMk5IYBdhLWcg3wxAvy - noseratio - open to work
重要的是要考虑到像这样容易混淆的问题的来源: http://msdn.microsoft.com/en-us/library/jj676915(v=vs.85).aspx - Luke
2
@Noseratio,我看了你在另一个问题中的示例,我认为在你的内部框架中,你没有看到真正的IE5 \ Quirks模式,而是一种称为“准标准模式”的东西,它几乎与标准相同,除了你提到的表格行为。更多信息请参见:http://msdn.microsoft.com/en-us/library/ff405912(v=vs.85).aspx。如果这对你有用,那太好了,但除了表格之外的其他东西将无法像纯遗留模式那样按预期工作。 - Daniel S.
2
Windows Internet Explorer 10和Internet Explorer 11在顶层页面不处于Edge模式时,都使用Quirks Mode仿真。 IE9:如果顶层页面不是以IE9模式运行,则iframe元素无法在IE9模式下呈现其内容,即使Web开发人员指定了它。- http://msdn.microsoft.com/en-us/library/ff955402(v=vs.85).aspx - Tamás Bolvári

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接