我正在设置一个页面,并且很难让它在浏览器中看起来很好(实际上只是IE,因为它适用于mozilla和webkit).在认真考虑自IE6以来修复的旧IE错误之前,我想排除怪异模式.容器页面具有声明的doctype,但iframe代码没有.iframe内容是以quirks-mode(因为它没有doctype)还是标准模式(因为容器有doctype)呈现的?来源遵循这个方案:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
...
<body>
...
<iframe ...>
<html>
<head>
...
</head>
<body>
....
</body>
</html>
</iframe>
...
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 我以为他们是一回事,只是我发现他们不是!
使用IE8我可以通过3种不同的方式显示相同的网页:
标准模式.XHTML严格DOCTYPE位于网页的顶部.
与上面相同,只是在IE8中点击了"兼容模式".现在网页显示有点奇怪.
如果我从网页中删除DOCTYPE(强制怪癖模式?).现在网页显示非常糟糕,与在"兼容模式"下查看时不同.此时点击'compatibilitybilty mode'没有任何区别.
我最近注意到几个网页,以及我自己的一些网页,当它们在Internet Explorer 9中显示时,当它不在Quirks模式时,它会在页面底部呈现一条大约1px的白线.这就像html标签是padding-bottom:1px并包裹在另一个带有白色背景的元素中(但它没有,并且它没有填充).看起来IE9标准和怪癖模式之间的差异在确定包装元素的宽度时会显示,但是在垂直方向上.它也感觉元素的内容被前一个元素推送1px,就像它们的内容一样,但是,不是边距或边框,它们与下一个元素尺寸重叠.
我无法确定究竟是什么原因造成的.有时,一个页面包含2个表,一切都很好.然后你需要添加第三个,然后显示该行.甚至不需要是表btw.
有时候,重置css可以解决它.设置我们在body上链接的相同行高:
body {
line-height: 1
}
a, links, visited {
line-height: 1
}
Run Code Online (Sandbox Code Playgroud)
修复它,但并非总是如此.我唯一能做的就是逐个元素检查,禁用/启用它们的css规则直到它消失.
我注意到当有像表,输入,textareas这样的元素时,这个问题更有可能发生.'重置'他们的属性,有时也解决它.
我知道提供代码作为一个例子会更容易,但就像我说的那样,我不能确定它的模式.我可以给你一些网站/网址的例子我注意到这个错误(你必须看看页面的最底部,看看IE和其他浏览器之间的区别,比如Firefox):
casinosdelmundo.info,gatosabido.com.br,espanol.yahoo.com,en.wikipedia.org/wiki/Bruce_Beutler,ea.com/command-and-conquer-4,facebook.com(白色或几乎白色的) bg,用f12,开发人员的工具改变身体背景,你会看到).我在stackoverflow找到了一个例子(因为今天,主页面stackoverflow.com也显示了该行,但是可以改变,因为有时问题出现或在新元素显示或删除时消失):
这个问题有白线: 表格单元格中的链接填充整个行高
这个没有: FireFox 3线高
检查此屏幕截图,如果您仍然没有看到我在说什么:

在已建立的(或非)网站上存在这个问题让我觉得这是一个IE9错误,唯一明确的修复方法总是使用白色背景,所以没有人会注意到白线(尽管这条线仍然存在).但那显然不是最好的选择.我从未在Chrome或Safari中找到此白线.
那么,有没有人遇到同样的问题,并得到了更好的解决方案?
为了防止IE9中的怪癖模式,我需要在每个HTML页面的最顶部添加这些行:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
Run Code Online (Sandbox Code Playgroud)
不幸的是,typo3将该<meta http-equiv ...行移动到标题部分的末尾,使其无用.
如何告诉tyop3在标头标签后立即放置元标记条目?
我在一个以怪癖模式运行的页面中有一个iframe(我无法控制包含页面),我需要以与现代浏览器功能兼容的模式呈现我的页面.
包含的页面大量使用较新的JavaScript功能(特别是漂亮的数组函数)和SVG渲染.虽然我可以足够轻松地填充数组函数,但我无法强制svg进行渲染.
要清楚,内部页面不是以怪癖模式运行 - 我已经指定了doctype和ie = edge <meta>标记.看起来它正在使用ie8渲染模式(很难确定)
问题的一个示例如下:http://stevesspace.com/quirks/quirks.html - 在chrome中加载以查看预期输出,并在IE9或10中检查实际输出.
编辑:我已经将文档模式和兼容模式添加到示例中,我可以确认它是使用IE8 doc模式.
我想我已经在IE(IE8)处理for-in javascript语句中发现了一个错误.经过几个小时的煮沸这个小例子后,看起来IE特意在for-in循环中跳过任何名为"toString"的属性 - 无论它是在原型中还是对象的"自有属性".
function countProps(obj) {
var c = 0;
for (var prop in obj) {
c++;
}
return c;
}
var obj = {
toString: function() {
return "hello";
}
};
function test() {
var o = "";
var d = document.getElementById('output');
o += "<br/>obj.hasOwnProperty('toString') == " + obj.hasOwnProperty('toString');
o += "<br/>countProps(obj) = " + countProps(obj);
o += "<br/>obj.toString() = " + obj.toString();
d.innerHTML = o;
}
Run Code Online (Sandbox Code Playgroud)
这应该产生:
obj.hasOwnProperty('toString') == true
countProps(obj) = …Run Code Online (Sandbox Code Playgroud) javascript internet-explorer prototype quirks-mode internet-explorer-8
我有这个问题,并且这其中,也这一个.不幸的是,它似乎不适合我.
我也看过微软的文档,但无济于事.
我尝试过几件事.
我加入<meta http-equiv="X-UA-Compatible" content="IE=5">了我的脑海.我<!DOCTYPE html>在元标记中添加了文档的开头.仍然没有骰子.唯一发生的事情是它进入Document Mode: Quirks:

但是,这不起作用.我的页面坏了.但是当我选择IE5怪癖时:

一切正常.无论什么价值的作品实际呈现页面.
虽然,事情是更为离奇的一点点,因为页面的工作就好在Chrome和Firefox浏览器.
哦,哇 显然它也适用
IE8标准.
将其更改为content="IE=8"或content="IE=EmulateIE8"似乎也不起作用.
我究竟做错了什么??
我创建了一个结合了内联jQuery UI datepicker的页面.当用户单击新日期以更新某些数据时,我不想发起对updatepanel的回调.现在,这个页面有多个updatepanels(不要问:)),所以我需要检查哪个updatepanel重新加载,以便做一些客户端的东西.我正在使用__doPostBack回发并Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function(sender, args) {}在更新完成时进行监听.
问题是在FF中,回调告诉我它不是异步操作,我需要检查哪个更新面板将更新设置为null.
我的问题是,这在IE中运行良好,但在任何其他浏览器中都没有,这可能是由两件事造成的:IE进入一个解决问题的怪癖模式(这是我的想法)或IE有某种本机支持对于其他浏览器不知道的updatepanel.
我把问题缩小了,并制作了一个测试页:
<!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 runat="server">
<title>Test</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js "></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js "></script>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<script type="text/javascript">
function doAspNetPostback() {
__doPostBack('<%= hiddenOnSelectionChangedButton.ClientID %>', '');
}
$(document).ready(function() {
/* Create the datepicker */
buildDatepicker();
/* Add callback-method for when the scriptmanager finished a request */
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function(sender, args) {
/* Show the panelID …Run Code Online (Sandbox Code Playgroud) 我在IE7中有显示问题,因为它以怪异模式渲染.我通过显示"document.compatMode"并返回"BackCompat"而不是"CSS1Compat"来确认这一点.使用IE8并恢复到IE7可以正常工作,因为这样可以避免怪癖.在简单的IE8中,我通过使用X-UA-Compatible标头强制渲染模式来修复它,但这对IE7不起作用.其他浏览器也会显示怪癖,但与IE不同,它不会将它们置于伪IE5.5模式,因此它们仍然可以正常渲染.
如何强制IE7在标准渲染模式下渲染而不是怪癖?我已经尝试将DOCTYPE设置为许多不同的选项,我没有添加xml序言.提前感谢您的回复.
题:
我们有一个门户网站,其中doctype与xhtml 1.0兼容.然后,在门户网站中,我们有一个内容iframe,我们嵌入了不同的Web应用程序.其中一些应用程序是由我们编写的,有些是第三方.
现在,在iframe中,我们嵌入了Microsoft Reporting Service报告等.问题是,报告服务报告要求QuirksMode"正确"呈现.并且门户网站在QuirksMode中不起作用(就我而言,这很好,因为我们只针对9,可能还有IE8).门户网站在IE7中也没有正常运行,我们将尽快放弃IE8支持.
但是,IE9似乎从父页面继承了文档模式,因此报告服务报告以IE9标准模式而不是quirks模式呈现.所以所有报告都显示不正确(我并不是说一点点,它真的很严重,完全错误,绝对可怕)
问题是,我们无法更改报告服务...
没有办法使报告服务(任何版本)呈现非quirksmode HTML.
根据Will iframe以怪癖模式渲染?
我可以补充一下
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
<meta http-equiv="X-UA-Compatible" content="IE=8" />
Run Code Online (Sandbox Code Playgroud)
要在QuirksMode中呈现iframe.(编辑:当我不关心门户网站如何渲染并将其放入其中时甚至不起作用)
不幸的是,门户网站就是说,而不是IE7兼容,所以这不是一个选项.
此外,SSRS报告在除门户网站之外的其他域上运行,因此我无法以任何方式使用JavaScript/jQuery.
有没有办法在QuirksMode中制作iframe渲染,而不破坏父页面布局?
或者(已经存在的)使报告服务呈现有效HTML的方式(我当然没有时间编写自定义HTML呈现扩展)?
quirks-mode ×10
html ×4
iframe ×3
javascript ×2
rendering ×2
ajax ×1
asp.net ×1
css ×1
doctype ×1
jquery ×1
meta-tags ×1
prototype ×1
typo3 ×1
typoscript ×1