标签 <Meta http-equiv="X-UA-Compatible" ..> 用于 Iframe 在 IE8 中不起作用
Posted
技术标签:
【中文标题】标签 <Meta http-equiv="X-UA-Compatible" ..> 用于 Iframe 在 IE8 中不起作用【英文标题】:Tag <Meta http-equiv="X-UA-Compatible" ..> for Iframe not works in IE8 【发布时间】:2013-04-10 09:08:17 【问题描述】:我为 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 中,标签还是别处?
【问题讨论】:
【参考方案1】:页面根据最顶层的框架呈现(浏览器模式在开始时只设置一次,嵌套框架中的所有值都被忽略)。
【讨论】:
【参考方案2】:通过测试我可以确认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 的第三个帧。
(是的,它很丑,但不幸的是它是固定应用程序的一部分)。
【讨论】:
以上是关于标签 <Meta http-equiv="X-UA-Compatible" ..> 用于 Iframe 在 IE8 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
在网页<head>标签之间都会加<meta http-equiv="Content-Type" content="text/html;chars