4

我得到了 IE 的这种 HTML 结构。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head></head>
<body id="body">
    <div>
      <iframe>
         <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
         <html xmlns="http://www.w3.org/1999/xhtml">
            <head></head>
            <body> 
                <!-- Here goes some graphic content using dojo libs -->
            </body>
         <html>      
      </iframe>
    </div>
</body>
<html>

当我插入两个标题(iframe html的主和标题)标签时

<meta http-equiv="X-UA-Compatible" content="IE=8,IE=9"/>

无论标签内的内容是什么(IE=8 或 IE=8、IE-9 或 IE=EDGE 等)

在 IE8 浏览器模式下不生成内部 iframe。但!!在 IE7 或 IE9 下工作正常

当我删除标签时 - 在所有版本的 IE 中都可以正常工作。

问题出在哪里?在 DOCTYPE 中,标签还是其他地方?

4

2 回答 2

3

页面根据最顶层的框架呈现(浏览器模式在开始时只设置一次,嵌套框架中的所有值都被忽略)。

于 2013-09-17T20:05:34.023 回答
1

通过测试我可以确认rocky的答案。通过更改最顶层框架的文档类型,我能够让 IE9 呈现标准模式。我不需要发送 X-UA-Compatible 标头或元标记。

顶部的任何帧都不会改变模式,所以我的结构

<!doctype html>
<html lang="en">
    ...
    <iframe>
        <!DOCTYPE HTML PUBLIC "-//W3C//Dtd HTML 4.0 transitional//en">
        <html>
        ...
        <iframe>
            <!DOCTYPE html>
            ...

导致所有帧的标准模式,包括正确呈现 html5 的第三个帧。

(是的,它很丑,但不幸的是,它是固定应用程序的一部分)。

于 2013-11-04T09:24:16.193 回答