2010-07-05 70 views
2

我使用Unit PNG Fix(http://labs.unitinteractive.com/unitpngfix.php)在IE中製作透明png作品。它被用在我的標誌容器的背景圖像上。在javascript完成之前隱藏span(或div)

所以我有我的html,其中包含這些相關的項目。在頭:

<!--[if lt IE 7]> 
     <script src="/assets/script_unitpngfix.js" type="text/javascript"></script> 
<![endif]--> 

然後在身體:

<a href="index.html" style="display:block;"><span id="Logo"></span></a> 

因爲,標誌負載與它周圍的灰色框單位PNG之前修復工作它的魔力,我怎麼能只隱藏整個跨度,直到JavaScript執行後,所以用戶從來沒有看到灰色框?

謝謝。

回答

2

保持span默認是隱藏的:

<span id="Logo" style="display:none;"></span> 

然後加入一段JavaScript後表現出來:

document.getElementById('Logo').style.display = 'inline'; 

最好的辦法,以確保(至少在IE瀏覽器),這片代碼在PNG Fix將其放入單獨的JS文件並將其作爲延遲腳本加載到頁面末尾後執行:

<script type="text/javascript" src="show_span.js" defer="defer"></script> 

更多細節延期腳本:JavaScript: Defer Execution

+0

更好的document.getElementById(」 Logo')。style.display ='';將顯示屬性恢復爲css默認值。 – Eineki 2010-07-05 17:25:43

+0

**最差的**放置命令的地方在PNG Fix中。您不必混合庫和實現代碼。 – Eineki 2010-07-05 17:29:46

+0

如果你不這樣做,你不知道PNG Fix什麼時候完成它的工作,所以你可能會再次結束一個灰色的框。 – casablanca 2010-07-05 17:30:39

0

我會通過使用jQuery或其它JS框架,然後使用一個「的document.ready」或類似的東西卡薩布蘭卡的解決方案去。

信任瀏覽器的加載時間/順序永遠不健康。

6

而非目前跨度把這:

<span id='Logo' 
     style="display:none"></span> 

,然後附加此功能可將身體onload事件(<body onload = "showMySpan()">):

function showMySpan() { 
var mySpan = document.getElementById('Logo'); 
mySpan.style.display = ""; 
} 
+0

better mySpan.style.display ='';將顯示屬性恢復爲css默認值。 – Eineki 2010-07-05 17:26:06

+0

我同意。起初我是這樣寫的,但是在發佈前編輯它。現在我將再次編輯。 :) – draganstankovic 2010-07-05 17:31:43

1

您可以使用類似jQuery及其ready功能,它專門用於等待DOM加載。

的HTML將使用display:none入手:

<span id="Logo" style="display:none;"></span> 

然後,添加一個這樣的腳本(假設你已經鏈接到jQuery的太):

<script> 
    $(document).ready(function() { 
    $("#Logo").show(); 
    }); 
</script>