`
simonlaw
  • 浏览: 40694 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

IE和FireFox浏览器的兼容问题( IE ->FF )

阅读更多

 

    通过firefox自带的工具学习的方法:
         打开TOOLS -> dom inspector , 左侧选中某个控件后, 右侧可以选择 JAVASCRIPT OBJECT
   
    通过自带工具调试javascript
        TOOLS -> JavaScript Console        
         
    打开所有js警告:
        在地址栏里录入:about:config
        双击,设置 javascript option restict  打开为true 能够看到很多警告,利于纠错
        
        
    ☆ 关于调试JS的tip
       调试js时,经常受缓存的影响,页面不会加载最新的代码,为此解决如下:
       在新页面里打开原来的地址,关闭原来的页面,ok了.
       以上方法在IE和FF下都有效.
      
       在ff下按Ctrl+shift+del, 打开清除私有信息对话框, 点击立即清除, 回到页面后reload一次也是可行的方案.
      

    
    
    ☆ IE -> firefox javascript类
         △   document.all   -> document.getElementById
                并且控件尽量用id,而不是name标识
               
                为了兼容旧代码,参考下面的函数, 把document.all 替换为 document_all即可
                function document_all(objName,doc){
                 if (!doc) doc = document;
                 
                 var obj;
                 obj = doc.getElementById(objName);
                 
                 if (!obj) obj = doc.getElementsByName(objName)[0];
                 
                 return obj;
                }
               
 
                提示:
                如果控件只有name,没有id, 用getElementById时:
                    IE:也可以找到对象
                    FF:返回NULL

         △   获得form里某个元素的方法
                formObj.elements['user_ name'];
        
         △   取集合元素时, ie支持  [],() 2种写法, 但是ff仅支持[],如:
                table.rows(5).cells(0)
                改为:
                table.rows[5].cells[0]
                 
         △   判断对象是否是object的方法应该为
                if( typeof  对象变量 == "object")
                而不是 if(对象变量 == "[object]")
               
         △     eval(对象名称)    ->  document.getElementById              
                  FF支持eval函数
                 
         △     通过id直接调用对象
                  对象id.value = ""
                  改为
                  document.getElementById("name").value = ""
                 
                 
               
         △     不支持onpropertychange事件
        
         △     obj.insertAdjacentElement("beforeBegin",objText); 
                改为用
                obj.parentNode.insertBefore(objText,obj);
           
         △     createElement不支持HTML代码
                  用document.write(esHTML); 可以解决一部分情况
                 
         △     innerText -> textContent
        
         △     对象名称中的$不能识别, 建议改为_
                  objName = "t1$spin"
                  改为
                  objName = "t1_spin"
                 
         △     事件名称和注册方式的变化
                    addEventListener("blur", myBlur, false);
      
   
        △      FF里设置Attribute为某个对象,然后再取出来,这时候对象的属性都丢失了?
                 objText.setAttribute("dropdown_select",obj);
                 alert(obj.id)   //正确的名字
                 obj = objText.getAttribute("dropdown_select");
                 alert(obj.id) //null
                 
                  在IE下没有问题, FF对setAttribute来说,第2个参数都是字符串型的!!!
                  所以如果第2个参数是对象时,相当于调用对象的 toString() 方法了
                 
                  解决的方法是用下面的调用方式:
                  objText.dropdown_select = obj;
                 
                  obj = objText.dropdown_select
                 
                 
        △      className -> class
                  FF下用class代替IE下的className
                  由于class是关键字, 所以需要用 setAttribute/getAttribute才行
                  setAttribute("class","css样式名称");
       
        △      在html里定义的属性,必须用getAttribute才行
                  
                  获取时:
                  document.getElementByID("TD1").isOBJ  总返回 undefined, IE下是可以的
                  应该用:
                  document.getElementByID("TD1").getAttribute("isOBJ")
                                   
   
        △      FF里select控件不再是:总是在顶端显示
                  所以需要设置控件的zIndex
       
        △      对于if ( vars == undefined ) 下面的值用于判断是等同的
                   undefined
                   null
                   false
                   0
       
       
        △      如果FF调用obj.focus(); 报错,请尝试改为:
                    window.setTimeout( function(){ obj.focus(); }, 0);

 

       现在的方案是在失去焦点前判断
       △       关于在控件的blur事件里判断下一个获得焦点的控件的tip, 类似于Powerbuilder的item focus changing事件
                  用途举例: 对dropdown控件里的text控件,
                  如果下一个获得焦点的对象是selection,则不做录入控制,如果不是,则提示,并设置焦点为text
                 
                  经测试:
                  IE: blur发生在focus后
                  FF: blur发生在focus前调用
                 
                 
                  IE: 在onbeforedeactivate事件里用activeElement可以获得下一个对象
                 
                  FF: blur事件发生在focus前面,而FF又没有中间事件
                    下面的都不行!
                    target
                    currentTarget
                    relativeTarget
                   
                    看来需要这样处理!
                    注册所有控件的onblur,设置lastElement
                    在focus里处理上一个? 也不行啊!
                   
                    能否模拟自己的itemfocuschanging事件?
                    IE: onbeforedeactivate
                    FF: 抢先注册onfocus和onblur, 在里面设置activeElement
                          在onfocus里设置activeElement后,
                          调用onbeforedeactivate
                          如果onbeforedeactivate返回false,则设置focus为原来的控件!
                         
                 
                  在控件失去焦点前,设置lastObj=this
                  在控件获得焦点时,先判断lastObj是什么
                 
                 
                 
                                           
                   
       △       FF不能处理alert造成的死循环情况
                   
       △       FF下,keyCode是只读的, 那把回车转换为tab怎么办? 在录入时进行转换怎么办??
                 
                  变通的方法是:
                  1. 回车跳转 -> 自己写跳转处理代码.
                  2. 在能够录入的控件里,
                      把选中的部分替换为新录入的内容: var text = String.fromCharCode(event.keyCode);
                      同时阻止按键事件上传, 调用: event.preventDefault()
                            
      
       △       selection的难度较大,因为IE和FF没有接近的函数
                  为此专门做了一个对象来消除差异
                  感觉firefox的selection机制使用起来更简洁一些
                 
                  这种模式是桥梁模式还是
                 
                 
       △        会被firefox解释为提交form或者刷新页面???
                  需要写标准
                   
       △       在firefox里, document.onfocus里获得不到实际获得焦点的控件?
                  为什么document.keydown可以呢?
                 
       △       children    -> childNode()
      
      
       △       sytle.pixelHeight -> style.height
      
       △       obj.attachEvent("onfocus", editmask_focus);
          obj.onfocus = editmask_focus;
                  上面2句竟然有区别! 
                  如果用 attachEvent, 就不能用 this 关键字了!
                  通用的做法是不用this, 而是用 event.srcElement
                 
       △       fireevent不能用
      
       △       onpropertychange    -> oninput
      
       △       判断函数或者变量是否存在
                IE: if (funcName)   funcName();
                    if (varName == undefined)   varName=1;
                   
                FF: if (window.funcName)    funcName();
                    if (window.varName == undefined)   varName=1;
               
                即前面要加 window.
   

    ☆ IE -> firefox css类
        △ cursor:hand  ->  cursor:pointer
                               
        △ expression  firefox不支持
         在IE下expression也非常消耗CPU,所以不应该使用!!
         为了达到较好的效果,应该建立自己的expression to javascript的处理函数
         这样在IE和FF里就都能用了.

        △ FILTER  firefox不支持
            filter: Alpha(Opacity=50);
         替换为
         -moz-opacity: 0.5;
 
        △ text-overflow
            不支持
           
        △ transparent
            firefox下 obj.setAttribute("bgColor","#ffffff") 只支持颜色
            必须用 obj.style.backgroundColor = "transparent" 才行

 

摘自 jxc博客

分享到:
评论
1 楼 andyhu1007 2008-07-02  
用firefox的firebug add-on,可以帮你解决太多问题啦。

相关推荐

    ie6 ie7 ff浏览器兼容

    ### 浏览器兼容性问题解析:针对IE6、IE7与Firefox的样式处理 在Web开发中,浏览器兼容性始终是一项重要的考虑因素。不同浏览器对CSS的支持程度不一,尤其是对于早期版本的Internet Explorer(IE)如IE6、IE7,以及...

    Firefox, IE5, IE5.5, IE6, IE7, IE8多种浏览器兼容的问题

    ### Firefox, IE5, IE5.5, IE6, IE7, IE8 多种浏览器兼容的问题 在早期的Web开发阶段,不同的浏览器之间存在显著的技术差异,这导致了跨浏览器兼容性问题的出现。本篇文章将针对Firefox、IE5、IE5.5、IE6、IE7以及...

    ie6_ie7_ie8_ff(火狐)浏览器兼容性

    在IT行业的前端开发领域,浏览器兼容性一直是一个关键议题,特别是在处理旧版浏览器如IE6、IE7、IE8以及火狐(Firefox)时。本文将深入探讨这些浏览器的兼容性问题,以及如何通过特定的技术手段来实现跨浏览器的一致...

    浏览器兼容(支持IE和firefox)

    浏览器兼容性问题一直是Web开发中的一个痛点,尤其是在处理IE6和Firefox这两个有着显著差异的浏览器时。以下是对这些兼容性问题的深入分析和解决方案。 首先,我们关注的是IE6中的`a`标签链接问题。在IE6中,如果`a...

    浏览器兼容问题汇总

    ### 浏览器兼容问题汇总:深入解析与解决方案 在前端开发中,浏览器兼容性问题一直是困扰开发者的一大难题。不同的浏览器对CSS的支持程度不一,尤其是对于老旧版本的Internet Explorer(如IE6、IE7)、Firefox等,...

    ie和ff浏览器的兼容

    特别是Internet Explorer(简称IE)与Firefox(简称FF)这两种浏览器之间存在的差异,经常导致网页显示效果不一致的问题。本文将根据提供的部分文档内容,深入探讨IE与FF在处理某些元素时的不同之处,并提供相应的...

    如何让div+css兼容ie6 ie7 ie8 ie9和FireFox Chrome等浏览器.pdf

    针对标题提及的"如何让div+css兼容ie6 ie7 ie8 ie9和FireFox Chrome等浏览器",这里将详细讨论一些关键的CSS兼容性问题及解决方案。 1. **DOCTYPE的影响**: DOCTYPE声明会影响浏览器进入何种文档模式。在HTML4或...

    IE6,IE7,FF等浏览器不兼容原因及解决办法

    在网页开发过程中,浏览器兼容性问题常常困扰着开发者,尤其是IE6、IE7以及Firefox(FF)等浏览器之间存在的差异。这些差异主要源于各浏览器对Web标准的不同理解和实现,导致CSS样式、JavaScript语法以及DOM...

    同浏览器CSS样式兼容问题

    不同的浏览器,尤其是Internet Explorer(IE)和Mozilla Firefox,由于对W3C标准的支持程度不同,会导致同一份CSS样式表在各个浏览器中呈现出截然不同的效果。这使得开发者需要花费大量时间去调试和调整代码,以确保...

    IE6、IE7、Firefox之间的兼容写法

    尤其在早期的Web开发过程中,不同版本的Internet Explorer(简称IE)浏览器与Mozilla Firefox(简称FF)等现代浏览器之间的差异尤为明显。本文将重点探讨IE6、IE7以及Firefox之间的CSS兼容性写法,帮助开发者更好地...

    浏览器兼容.doc-CSS hack姐姐兼容性问题

    然而,针对IE6、IE7、Firefox、Chrome、Opera等其他浏览器的兼容性问题,我们需要使用更复杂的CSS Hack。以下是一个示例: ```css .t1 { color: #000000; *color: #0000FF; /* 仅IE7识别 */ _color: #66CCCC; /*...

    FF和IE兼容性问题

    FF(Firefox)和IE(Internet Explorer)作为两大主流浏览器,它们对CSS的解析方式存在一定的差异,这使得开发者需要进行额外的工作来确保页面在不同浏览器下展示一致。本文将深入探讨FF和IE之间的CSS兼容性问题,...

    css解决IE6,IE7,firefox兼容性问题.

    ### CSS解决IE6、IE7及Firefox兼容性问题详解 #### 一、引言 随着互联网技术的发展,浏览器种类日益增多,其中Internet Explorer (IE) 和 Firefox 是早期非常流行的两款浏览器。尤其在2000年代中期,IE6、IE7 和 ...

    IE与FF的兼容问题

    ### IE与FF的兼容问题 #### CSS篇 在网页开发过程中,不同的浏览器对CSS的支持程度不一,导致了诸多兼容性问题。以下列举了一些IE(Internet Explorer)与Firefox(火狐浏览器)之间的常见CSS兼容性差异及其解决...

    div+css兼容ie6ie7ie8ie9和FireFoxChrome等浏览器方法[借鉴].pdf

    本文将深入探讨如何使CSS样式兼容IE6、IE7、IE8、IE9以及Firefox、Chrome等现代浏览器。 1. **DOCTYPE声明的影响**: DOCTYPE声明对于浏览器的渲染模式至关重要。在HTML文档的顶部加入正确的DOCTYPE,如`<!DOCTYPE...

    CSS浏览器兼容性问题(IE6,IE7,IE8和Fixfox)

    【CSS浏览器兼容性问题(IE6,IE7,IE8和Firefox)】 在网页开发中,CSS(层叠样式表)的浏览器兼容性是设计师和开发者必须面对的一大挑战。尤其在处理IE6、IE7、IE8以及Firefox等不同浏览器时,由于各浏览器对CSS规范...

    ie和火狐的兼容问题总结

    ### IE和火狐的兼容问题总结 在前端开发过程中,我们...综上所述,处理IE与Firefox之间的兼容问题需要对两种浏览器的行为有深入的理解,并采取相应的策略来确保网站能够在各种浏览器环境下都表现出良好的用户体验。

    浏览器兼容性汇总

    - **IE或Firefox 2.0.x**: 支持 `window.location` 和 `window.location.href`。 - **Firefox 1.5.x**: 仅支持 `window.location`。 **解决方案**: 使用 `window.location` 替代 `window.location.href`,确保兼容...

Global site tag (gtag.js) - Google Analytics