2013-05-03 39 views
2

我有一个运行Sharepoint 2007的站点。SP 2007的母版页没有DOCTYPE,因此呈现为怪癖模式。我在Sharepoint内部的iframe中嵌入了另一个站点。该网站更现代 - HTML5 DOCTYPE和IE = Edge的X-UA兼容元。什么模式在Sharepoint 2007内呈现iframe(所以,怪癖模式)?

所以,我想了解什么模式的iframe内容呈现在各种IE浏览器。

尽我所知,在< = IE8中,父级(Sharepoint)将以怪癖模式呈现,并且框架将在标准模式下呈现。这是我想要的。

但是,在IE9 +中会发生什么?下面的参考文献似乎认为我的框架将以怪癖模式开始渲染,这会很糟糕。如果我在Sharepoint的主控台上放置一个IE8的X-UA兼容元件,那么会在我的iframe中为我提供标准模式吗?

编辑:在IE10,我测试亲本的各种配置(与文档类型和无,并与各METAS),并得到了这些结果:

  • IE10/DOCTYPE /无元:10标准/ 10标准
  • IE10 /无DOCTYPE /元边缘:10标准/ 10标准
  • IE10 /无DOCTYPE /元9:9标准/ 9标准
  • IE10 /无DOCTYPE /元8:8标准/ 8标准
  • IE10/no doctype/meta 5 :5怪癖/ 8标准
  • IE10 /无DOCTYPE /无元:10怪癖/ 10标准

一些有用的链接:

IE有时候让我想跳下去桥梁。

回答

2

iframe将以与包含页面相同的模式呈现,而不管任何元标记或文档类型设置。当使用开发工具手动更改文档或浏览器模式时,我也注意到混合结果,因此不要依赖它。如果您想要超级安全,请在更改文档模式时加载新的浏览器选项卡 - 我不相信它!

此快速页面的我做了会给你你后的信息了兼容性:http://stevesspace.com/test/quirks/modern.html

<!doctype html> 
<html> 
<head> 
    <meta http-equiv="X-UA-Compatible" content="IE=9" /> 
    <title>Inner page</title> 
    <style> 
     .pass 
     { 
      color: green; 
     } 
     .fail 
     { 
      color: red; 
      font-weight: bold; 
     } 
     #quirks-mode 
     { 
      color: #fff; 
      color: f00; 
     } 
     #not-quirks-mode 
     { 
      color: green; 
      color: fff; 
     } 
    </style> 
</head> 
<body> 
    <div>Quirks Mode: <span id="quirks-mode">true</span><span id="not-quirks-mode">false</span></div> 
    <div>Javascript: <span id="scripts-enabled" class="fail">false</span></div> 
    <div>Array map support: <span id="array-map" class="fail">false</span></div> 
    <hr /> 
    <div>Doc Mode: <span id="doc-mode"></span></div> 
    <div>Compat Mode: <span id="compat-mode"></span></div> 
    <hr /> 
    <div>SVG Circle should render below</div> 
    <svg> 
     <circle cx="50" cy="50" r="50" style="fill: green;"/> 
    </svg> 
</body> 
<script type="text/javascript"> 
    document.getElementById('doc-mode').innerHTML += document.documentMode; 
    document.getElementById('compat-mode').innerHTML += document.compatMode; 

    document.getElementById('scripts-enabled').innerHTML = 'true'; 
    document.getElementById('scripts-enabled').className = 'pass'; 

    if (Array.prototype.map) { 
     document.getElementById('array-map').innerHTML = 'true'; 
     document.getElementById('array-map').className = 'pass'; 
    } 
    </script> 
</html>