最好都是能使用w3c的標準l來進行代碼編寫
<!-- 這是ie方法 -->
<script defer type="text/javascript">
subDate();
</script>
<script type="text/javascript">
// 這是ff方法
if (document.addEventListener)
document.addEventListener("DOMContentLoaded", function(){subDate();}, null);
</script>
也可以:
<script type="text/javascript">
if (document.addEventListener)
document.addEventListener("DOMContentLoaded", function(){choose();}, null);
else
window.onload = choose;
</script>
這是ie 和ff 頁面載入完後執行的事件
innerText在ff裡沒有這個屬性,對應的屬性是textContent
下面是判斷是否是IE
if(navigator.appName.indexOf("Explorer") > -1)
document.getElementById("xx").innerText = "xxxxxx";
else
document.getElementById("xx").textContent = "xxxxxx";
用innerHTML可以相容
1、用id或者name來命名網頁元素,用document.getElementByIdx或document.getElementsByName來擷取元素對象,但是建議用id,因為在IE中document.getElementsByName("test")擷取的是id="test"的對象。
2、對於document.all,看有的建議用document.all來解決,不過這個依然在FF中報錯,最好還是用上述方法。
3、innerText只存在於IE中,用innerHTML代替
4、IE中事件對象event,FF中evnt
1) 擷取觸發事件作用對象IE中用event.srcElement,FF中用event.target
但是event在FF中只能在事件的發生現在使用,所以一般通過event參數來解決這個問題
例如< input onclick="getEvent(event)" ... />
< script type="text/javscript">
function getEvent(event){
var obj=event.srcElement?event.srcElement:event.target
}
< /script >
2)event.x&event.y只存在於IE中,而相等效的event.pageX,event.pageY只存在於FF中,解決方案有兩種
a,用event.clientX&event.cilentY來代替,在有捲軸時與上面有一點區別,但是絕大多數情況下兩者一直。
b,event.x?event.x:event.pageX ,event.y?event.y:event.pageY來實現
5、document.formName.item("itemName")只能在IE中運行不能在FF中運行,所以,用document.formName.elements["elmentName"]
IE中可以用()來包含集合類對象的名字來擷取對象,FF不可以,需要用[]代替
document.forms("formName") 改成 document.forms["fromName"]
document.getElementByIdx("id")(sum) 改成 document.getElementByIdx("id")[sum]
6、childNodes在FF&IE中的區別: test
在IE中nav 的childNodes=2,且childNodes[0].nodue=test
在FF中nav的childNodes=3,且childNodes[1].nodue=test
7、依據參數擷取form對象
要想擷取form的對象不能下面這種方式獲得:
function test(formName){document.formName.inputName.value="test"}
而是這樣獲得
function test(formName){document.forms[formName].elements["inputName"].value="test"}
8、用setAttribute加事件屬性
IE:document.getElementByIdx("test").setAttribute("onclick",function(){alert("test")})
FF:document.getElementByIdx("test").setAttribute("onclick","alert(/"test/")")
9、sibling
FF中用nextSiling、previousSiling、parentNode.lastChild等擷取相鄰的標籤對象,兩個相鄰的標籤之間不能有空隙或者換行,IE中某些情況下可以比如parent.nextSibling;某些情況下不可以,比如nextSibling,所以最好的方法是在利用節點樹型關係擷取標籤對象的時候,為了避免錯誤應該標籤&標籤之間沒有空格&換行。