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

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

2013年10月22日 ⁄ 综合 ⁄ 共 4632字 ⁄ 字号 评论关闭

 

一些参考
     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. 在能
够录
入的控件里,
                      把
中的部分替换为

【上篇】
【下篇】

抱歉!评论已关闭.