js中foxfire兼容性问题几例

项目在做到一个弹出层的时候,与foxfire出现了兼容性问题,在IE里边一切都正常,但是foxfire里边就是什么都弹不出来,或则弹出来又乱码.关闭也关闭不了,commit也无法操作,后来利用firefox自带的firebug进行debug,终于把所有问题基本解决,以下罗列出现的所有问题,希望对以后有帮助.

1.select选择框查找选中的问题.

  var  c  =  document.getElementById( " selProductStatus " );
    
for  ( var  count = 0 ;count < c.options.length ;count ++  )
    
{
//此时选择c.options[count],在IE下边有效。但在firfox下不会兼容。必须要c.options.item(count)
        if (c.options.item(count).value==status)
        
{
            c.selectedIndex 
=count;
        }

    }
2.innerText的问题,firfox不支持innerText的说法.解决方法是加上以下代码:
// convert innerText to fix the foxfire 
function  isIE() //ie? 
if (window.navigator.userAgent.toLowerCase().indexOf("msie")>=1
    
return true
else 
    
return false
}
 

if ( ! isIE()) //firefox innerText define
    HTMLElement.prototype.__defineGetter__("innerText"
    
function(){
        
var anyString = "";
        
var childS = this.childNodes;
        
for(var i=0; i<childS.length; i++
            
if(childS[i].nodeType==1)
                
//anyString += childS[i].tagName=="BR" ? "/n" : childS[i].innerText;
                anyString += childS[i].innerText;
            
else if(childS[i].nodeType==3)
                anyString 
+= childS[i].nodeValue;
        }

        
return anyString;
    }
 
    ); 
    HTMLElement.prototype.__defineSetter__(
"innerText"
    
function(sText){
        
this.textContent=sText; 
    }
 
    ); 
}

3.区分id大小写问题
function  closeDiv(_sID)
{
//传入的string必须区分打小写,比如有个div的id 为'Test',那么传入的值就必须是'Test',但是ie中大小写都可以.
    var oObj = $(_sID);
    
//oObj.style.display = "";
    oObj.style.display = "none";
}

4.xml解析问题
// update触发ajax事件处理后触发事件。
function  updateResult()
{
    
if(xmlHttp.readyState==4)//服务器响应状态
    {
        
if(xmlHttp.status==200)//代码执行状态
        {
          
       
if(window.ActiveXObject){//IE 进入此处处理
         var   xmlDoc=new   ActiveXObject("Microsoft.XMLDOM")  ;
               xmlDoc.async
="false"  ;
               xmlDoc.loadXML(xmlHttp.responseText);
               
var  nodes = xmlDoc.documentElement.childNodes  ;
               
var id0 = nodes.item(0).getAttribute("id");
               
var id1 = nodes.item(1).getAttribute("id");   
            document.getElementById(id0).innerText 
= nodes.item(0).text;
              document.getElementById(id1).innerText 
= nodes.item(1).text;
              alert(
'update complete!');
             }
        
 }
else {//firefox 进入此处处理
           var  oParser =new DOMParser();
          
var oXmlDom = oParser.parseFromString(xmlHttp.responseText,"text/xml");
          
var  id0 = oXmlDom.documentElement.childNodes[0].attributes[0].nodeValue  ;  
          
var  id1 = oXmlDom.documentElement.childNodes[1].attributes[0].nodeValue  ;
                                     document.getElementById(id0).innerText 
= oXmlDom.documentElement.childNodes[0].textContent;
                document.getElementById(id1).innerText 
= oXmlDom.documentElement.childNodes[1].textContent;
                alert(
'update complete!');
          }
                
        }

            
// var xmlDom = startGetXML();  
          //   window.alert(xmlHttp.responseText);
        }

    }
    

}

转载于:https://www.cnblogs.com/sorry208/articles/1175367.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值