javascript
2009-02-18 168 views -1 likes 
-1

Firefox可以很好地處理它,但Safari和IE7會自動失敗並且不會插入該元素。爲什麼這個javascript不能在IE7或Safari中工作?

<script type="text/javascript"> 
    var ul = document.getElementById('xg_navigation').getElementsByTagName('ul')[0]; 
    ul.innerHTML = '<li id="xg_tab_home" class="xg_subtab"><a href="http://somedomain.com/">Some Text</a></li>' + ul.innerHTML; 
</script> 

這是用HTML exisitng類似的結構:

<div id="xg_navigation"> 
    <ul> 
    <li><a href="...">Foo</a></li> 
    ... 
    </ul> 
</div> 

我沒有在HTML控件,但我有插入一段JavaScript代碼在頁面主體的能力。

很遺憾,我似乎對跨瀏覽器JavaScript支持的教育程度很差。我是否需要通過onPageLoad類事件掛鉤它?

回答

6

好像你正在操縱DOM已加載之前,嘗試添加的代碼片段的window.onload監聽器裏:

<script type="text/javascript"> 
window.onload = function() { 
    var ul = document.getElementById('xg_navigation').getElementsByTagName('ul')[0]; 
    ul.innerHTML = '<li id="xg_tab_home" class="xg_subtab"><a href="http://somedomain.com/">Some Text</a></li>' + ul.innerHTML; 
} 
</script> 
2

是的,在文檔加載完成之前,IE無法訪問DOM元素。

+0

那麼什麼是設置溫控功能的正確方法當頁面加載完成,工程跨瀏覽器中運行? – 2009-02-18 00:29:04

1

通常你必須等待DOM要準備執行腳本修改DOM。

一個簡單的方法來做到這一點是使用jQuery

$(function() { 
    $('#xg_navigation ul').prepend('<li id="xg_tab_home" class="xg_subtab"><a href="http://somedomain.com/">Some Text</a></li>'); 
}); 
相關問題