zoukankan      html  css  js  c++  java
  • javascript在中ie与firefox的区别与解决方案(转)

    javascript在中ie与firefox的区别与解决方案

    1.载入xml
    ie创建对象:
        msXmlAx=new ActiveXObject("Microsoft.XMLDOM");
    firefox创建对象:
         xDoc=document.implementation.createDocument("","",null);

    总体方法为:
         ///判断浏览器 创建不同的对象
         function getXmlDocument()
         {
            var xDoc;
         if(document.implementation && document.implementation.createDocument)
         {
          xDoc=document.implementation.createDocument("","",null);
         }
         else if(typeof ActiveXObject !="undefined")
         {
           var msXmlAx=null;
         try{
               msXmlAx=new ActiveXObject("Microsoft.XMLDOM");  
         }
         catch(e)
         {

                        msXmlAx=new ActiveXObject ("Microsoft.XMLDOM");
         }
         xDoc=msXmlAx;
       
         }
         if(xDoc== null || typeof xDoc.load=="undefined")
         {
          xDoc=null;
       
       
         }
         return xDoc;
        
         }


    2.insertRow和insertCell
    在ie中可直接调用该方法 document.getElementById("xxx").insertRow();
    在firefox 中需要放置参数:document.getElementById("xxx").insertRow(-1);

    同样 insertRow(-1)也支持ie

    3.判断浏览器类型

    /*---------------------------------------------------------------
        --this function can return the actual browser name and version.--
        --USESAGE:There are Two Methods(See the end of this function) --
        --Create By Yemoo. DateTime:2006-2-3 21:53:37                 --
        ---------------------------------------------------------------*/
        function browserinfo(){
            var Browser_Name=navigator.appName;
            var Browser_Version=parseFloat(navigator.appVersion);
            var Browser_Agent=navigator.userAgent;
            
            var Actual_Version,Actual_Name;
            
            var is_IE=(Browser_Name=="Microsoft Internet Explorer");
            var is_NN=(Browser_Name=="Netscape");
            
            if(is_NN){
                //upper 5.0 need to be process,lower 5.0 return directly
                if(Browser_Version>=5.0){
                    var Split_Sign=Browser_Agent.lastIndexOf("/");
                    var Version=Browser_Agent.indexOf(" ",Split_Sign);
                    var Bname=Browser_Agent.lastIndexOf(" ",Split_Sign);

                    Actual_Version=Browser_Agent.substring(Split_Sign+1,Version);
                    Actual_Name=Browser_Agent.substring(Bname+1,Split_Sign);
                }
                else{
                    Actual_Version=Browser_Version;
                    Actual_Name=Browser_Name;
                }
            }
            else if(is_IE){
                var Version_Start=Browser_Agent.indexOf("MSIE");
                var Version_End=Browser_Agent.indexOf(";",Version_Start);
                Actual_Version=Browser_Agent.substring(Version_Start+5,Version_End)
                Actual_Name=Browser_Name;
                
                if(Browser_Agent.indexOf("Maxthon")!=-1){
                    Actual_Name+="(Maxthon)";
                }
                else if(Browser_Agent.indexOf("Opera")!=-1){
                    Actual_Name="Opera";
                    var tempstart=Browser_Agent.indexOf("Opera");
                    var tempend=Browser_Agent.length;
                    Actual_Version=Browser_Agent.substring(tempstart+6,tempend)
                }
            }
            else{
                Actual_Name="Unknown Navigator"
                Actual_Version="Unknown Version"
            }
            /*------------------------------------------------------------------------------
            --Your Can Create new properties of navigator(Acutal_Name and Actual_Version) --
            --Userage:                                                                    --
            --1,Call This Function.                                                       --
            --2,use the property Like This:navigator.Actual_Name/navigator.Actual_Version;--
            ------------------------------------------------------------------------------*/
            navigator.Actual_Name=Actual_Name;
            navigator.Actual_Version=Actual_Version;
            
            /*---------------------------------------------------------------------------
            --Or Made this a Class.                                                    --
            --Userage:                                                                 --
            --1,Create a instance of this object like this:var browser=new browserinfo;--
            --2,user this instance:browser.Version/browser.Name;                       --
            ---------------------------------------------------------------------------*/
            this.Name=Actual_Name;
            this.Version=Actual_Version;
        }
    通过: navigator.Actual_Name 得到浏览器名称,navigator.Actual_Version 的到浏览器版本

    4. firefox 中无法像ie一样通过documentElement得到xml文本对象的所有元素信息,可以使用替换法:
       创建XMLHttpRequest对象,通过它的responseXML返回的xml对象进行操作

    5.firefox中不支持window.event
    解决方法:
        document.onclick=function(e) //要兼容ff的话,这个参数一定要写上
         {
           e = window.event || e;
           e = e.srcElement || e.target;
           //其他实现代码
        }
    6.firefox不支持parentElement,若要使用可写成:parentNode

    7.IE中将xml通过xsl进行格式化时,使用如下代码:
       xmlDoc.transformNode(xslDoc);
       xmlDoc为xml文档
       xslDoc为xsl文档
    在firefox中使用如下代码:
        var   xsltProcessor =new XSLTProcessor();  
              xsltProcessor.importStylesheet(xslDoc);
        var   resultHtml= xsltProcessor.transformToDocument(xmlDoc);
        var   oXmlSerializer = new XMLSerializer();
        $GetEle("ZfDiv_").innerHTML= oXmlSerializer.serializeToString(resultHtml);

    8.ifream加载中 使iframe的高度根据所加载页的高度而改变
    网上有代码为:
       <iframe onload="document.all.demo.height=document.frames['demo'].document.body.scrollHeight" src="demo.htm" />
       代码没有问题,只是在Firefox中不能实现想要的效果
       改为:
         document.getElementById('demo').height=window.frames['demo'].document.body.scrollHeight
       即可

  • 相关阅读:
    扩展方法 之 Asp.Net篇【转】
    PowerDesiGner数据库设计
    DataFormatString格式化字符串的总结
    C#序列化对象为XMl于反序列化
    c# 反射初探【转】
    事件驱动的javascript 【转】
    每日一题力扣598
    每日一题力扣283
    每日一题力扣189数组的旋转 取模这个想法好棒!
    每日一题力扣119杨辉三角
  • 原文地址:https://www.cnblogs.com/jacklong/p/1033937.html
Copyright © 2011-2022 走看看