现在的位置: 首页 > 综合 > 正文

js在IE和火狐下的一些区别

2013年09月14日 ⁄ 综合 ⁄ 共 2439字 ⁄ 字号 评论关闭

最好都是能使用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,所以最好的方法是在利用节点树型关系获取标签对象的时候,为了避免错误应该标签&标签之间没有空格&换行。

 

 

 

抱歉!评论已关闭.