IE下JavaScript迁移到FireFox下的工作笔记

 

一些参考
     http://nexgenmedia.net/evang/iemozguide/
     
     
http://www.javascriptkit.com/domref/
     
     
     通
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下没有
问题, FFsetAttribute来,第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才行
                  <td id="TD1" isOBJ="true">
                  
:
                  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没有接近的函数
                  
专门做了一个
象来消除差异
                  感
firefoxselection机制使用起来更简洁一些
                  
                  
这种模式是梁模式
                  
                  
       △       <button> 会被
firefox释为提交form或者刷新???
                  需要写
<button type="button">
                    
       △       在
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" 才行

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值