2010-03-29 156 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放在一個頁面中就可以工作,你知道如果你在某個時候裁減你的頁面,它就會開始工作。

無論如何,你的基本理念是:不斷移除和簡化事物,直到它開始工作,從最簡單的事情開始改變並開始進行大手術。在某些時候,您會將問題隔離出來,通常很快找到修復程序。