使用javascript强制IE9进入兼容模式

使用javascript强制IE9进入兼容模式,javascript,internet-explorer-9,ie-compatibility-mode,Javascript,Internet Explorer 9,Ie Compatibility Mode,我有一个框架需要兼容模式,但父框架似乎正在设置它,因此框架内的以下标记不起任何作用 <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /> 是否只对帧应用兼容模式,或者让帧对父帧应用兼容模式 我在想,如果有一个javascript方法来切换模式,我可以将它从子帧应用到父帧。从我的头顶,你可以尝试创建元标记并将其插入父帧头部。但我不确定这是否会迫使模拟 var meta = document.create

我有一个框架需要兼容模式,但父框架似乎正在设置它,因此框架内的以下标记不起任何作用

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

是否只对帧应用兼容模式,或者让帧对父帧应用兼容模式


我在想,如果有一个javascript方法来切换模式,我可以将它从子帧应用到父帧。

从我的头顶,你可以尝试创建元标记并将其插入父帧头部。但我不确定这是否会迫使模拟

var meta = document.createElement('meta');
meta.setAttribute('http-equiv', 'X-UA-Compatible');
meta.setAttribute('content', 'IE=EmulateIE7');

parent.document.getElementsByTagName('head')[0].appendChild(meta);

这是我收集到的

唯一有效的是元标记方式

然而,它似乎不能在帧中工作,因为IE9已经禁用了一个帧与另一个帧具有不同类型的功能

meta标记前面不能有脚本或链接标记,只能有我注意到的其他meta标记,否则它也会失败

测试用例:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
    <head>
        <title>Test test</title>
        <meta name="keywords" content="keywords, keyword, keyword phrase, etc.">
        <!--<link href="test.css" rel="stylesheet" type="text/css" />-->
        <!--<script type="text/javascript">alert('test');</script>-->
        <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
    </head>
    <body>
        inline-block <div style="display:inline-block">test</div>
    </body>
</html>

测试
内联块试验

不幸的是,这无法实现。在IE框架中,始终使用父文档的呈现模式。我假设,由于您无法更改父文档,因此它们不在同一个域中,因此跨域边界将阻止您从帧中更改父文档的呈现模式。我在同一个域中,但这是一个大型遗留应用程序,有数千页。当IE7支持开始被逐步淘汰时,简单地在整个shebang上设置兼容性模式似乎会带来更多麻烦。然而,如果我能让孩子在一页上更改家长的文档,那正是我想要的。在我的例子中,跨域边界不是问题。如果用open打开iframe,那么iframe将有权访问opener来执行类似opener.set_XUA(“IE=EmulateIE7”)的操作。为了实现这一点,您可以使用open并将iframe的名称作为目标,因此它使用iframe在那里打开页面。这可能比它应得的麻烦多。我明白了,尽管我恐怕不能在新窗口中打开框架。它实际上不是一个iframe,而是一个很好的ol框架,其中一个框架是导航。这个需要IE7模式的框架将用于多少页面?如果它只在几个页面上,那么您可以通过htaccess或IIS的管理控件为该页面设置必要的自定义标题。