2010-03-29 152 views
4

我已经使用HTML 5编写了一个应用程序,并且当有人从IE访问时,我不想显示错误框而不是页面。当它检测到navigator.appNameMicrosoft Internet Explorer时,它隐藏所有内容并显示开始隐藏的错误div。股利如下:IE不呈现div内容

<div id='ieerror' style='display:none;width:500px;height:500px;border:3px solid #ff0000;position:absolute;top:50%;left:50%;margin-top:-250px;margin-left:-250px;'> 
    <center> 
     <h1 style='font-size: 30px;'>Internet Explorer is not supported by Aud!</h1><br /><br /> 
     <p>Internet Explorer does not support HTML 5 and therefore this application cannot run.<br /> 
     Please upgrade your browser. We suggest <a href='http://www.google.com/chrome'>Google Chrome</a>!</p> 
    </center> 
</div> 

的问题是,当我访问在IE页面中,DIV与边框弹出,但没有内容。它里面什么都没有。我去了view->source看着它,代码仍然存在,但没有渲染。我该如何解决?

+0

这是ASP .net/php吗?如果是这样,你可以使用请求头来确定浏览器,如果它是IE只是发送一个错误页面。 – Russell 2010-04-01 03:25:10

+0

另外,根据下面的注释,PO提到IE8中会出现这个问题。不确定这是否适用于其他版本的IE。 – Russell 2010-04-01 03:38:18

回答

1

IE可能会级联“display:none;”通过该父母的子元素。尝试修改JavaScript以修改这些元素的显示属性。

0

你是风格说显示:无?如果删除所有样式代码并返回到IE中,那么您是否看到任何文本?

+0

但我把它切换到显示:阻止在我的JavaScript。如果这是问题,它也不会显示边界。 – 2010-03-29 03:41:37

+0

如果我删除了样式,内容仍然不会出现。 – 2010-03-29 03:46:03

+0

那很奇怪。有没有任何外部风格阻碍?如果你在文本元素上添加边框怎么办? – Kevin 2010-03-29 03:47:13

0

我尝试在IE的代码和它的作品,你所期望的,但只有在我记得把

div.style.display = "block"; 

div后。当我误将它放在前面时,它会抛出一个(无声)错误。

+0

它不会为我抛出任何错误。我试图把它放在div后,它没有任何区别。我去了JS控制台,我做了document.getElementById('ieerror')。style.display =“block”;它没有改变任何东西。 div的边框出现了,但里面没有任何东西。 – 2010-03-29 04:02:54

3

没有看到你很难知道到底发生了什么错误页面的整个HTML(你应该发表一个URL如果页面是Internet访问!),但在这里就是我想解决这个问题:

  1. 首先,我会制作一个页面的测试副本,因为跟踪下来可能涉及很多HTML更改。
  2. 接下来,我会删除display:none并注释掉所有针对div的脚本,并且为了好玩,我还要更改div的ID以确保没有脚本触及它。如果div的内容突然出现,那么问题可能出现在您的脚本中,而不是您的样式中。
  3. 接下来,我会删除所有样式(在div和它的子节点),以查看问题是在样式中还是在它们之外。
  4. 如果div的内容在所有样式被删除的情况下显示,那么开始逐个添加背部样式,直到它再次打破。这不会解决问题,但至少会将您指向罪魁祸首。
  5. 如果div的内容仍然不显示所有样式已删除,则尝试删除页面上的其他样式。例如,注释掉你包含的CSS文件。这样可以防止明显的问题,例如,在包含的样式表中将center元素定义为白色背景中的文本。或者更不明显的问题,如继承溢出或文字包装样式,导致包含的内容被剪切或隐藏。
  6. 如果这也不起作用,那么问题可能是由该div的父元素引起的。由于它绝对定位,所以将它放在DOM中并不重要,因此请尝试将div作为body元素的直接子元素。这将消除任何父母问题。
  7. 如果这些都不起作用,请尝试对我们进行评论或从您的页面中移除越来越多的内容,直到它开始工作。既然你知道只要简单地把HTML放在一个页面中就可以工作,你知道如果你在某个时候裁减你的页面,它就会开始工作。

无论如何,你的基本理念是:不断移除和简化事物,直到它开始工作,从最简单的事情开始改变并开始进行大手术。在某些时候,您会将问题隔离出来,通常很快找到修复程序。