现在问题也很简单了,就是用这个insertAdjacentElement函数能替代下面文件中的insertAdjacentElement调用,能在firefox中显示
insertAdjacentElement=function(where,parsedNode){
        switch(where){
            case "beforeBegin":
                this.parentNode.insertBefore(parsedNode,this);
                break;
            case "afterBegin":
                this.insertBefore(parsedNode,this.firstChild);
                break;
            case "beforeEnd":
                this.appendChild(parsedNode);
                break;
            case "afterEnd":
                if(this.nextSibling)
                    this.parentNode.insertBefore(parsedNode,this.nextSibling);
                else
                    this.parentNode.appendChild(parsedNode);
                break;
            }
        }function alai_tree(imageList,indent,toObject,labelStyle)
{try{
if(!document.getElementById){throw new Error(999,"Your browser dosen't support Alai_tree(),IE5.0+ is recommended.");}
var count=0,depth=0,nodes=[],tree=this
this.copywrite="Copywrite by Alai(5����) (c)2003��All right reserved!"
this.err=""
imageList=imageList==null?new alai_imagelist():imageList
var icons=imageList.item
this.imageList=imageList
if(icons["default"]!=null){if(icons["link"]==null)icons["link"]=icons["default"]}
var showExpand=icons["expand"]!=null && icons["collapse"]!=null
if(showExpand)
{ if(icons["expand_top"]==null)icons["expand_top"]=icons["expand"]
if(icons["expand_end"]==null)icons["expand_end"]=icons["expand"]
if(icons["collapse_top"]==null)icons["collapse_top"]=icons["collapse"]
if(icons["collapse_end"]==null)icons["collapse_end"]=icons["collapse"]
}
var showBranch=icons["leaf"]!=null && icons["twig"]!=null
var showLine=icons["line"]!=null && icons["blank"]!=null
var root={}
root.children=[]
root.expanded=true;
root.getTier=function(){return 0;}
var selectedNode=null,activeNode=null;
Array.prototype.remove=function(index){if(index<0 || index>=this.length)return;for(var i=index;i<this.length;i++)this[i]=this[i+1];this.length--;}
Array.prototype.indexOf=function(elm){for(var i=0;i<this.length;i++)if(elm==this[i])return i;return -1;}
var setExIcon=function(srcNode)
{ if(srcNode.hasChild && showExpand)
{ var sEx=srcNode.next==null?"_end":"";
if(srcNode==nodes[0])sEx="_top";
srcNode.exIcon.src=srcNode.expanded?icons["collapse"+sEx].src:icons["expand"+sEx].src;
srcNode.icon.style.marginLeft=0;
}
else
{ if(showBranch){srcNode.exIcon.src=srcNode.next==null?icons["twig"].src:icons["leaf"].src}
else if(showExpand){srcNode.icon.style.marginLeft=icons["expand"].width}
}
}
var setLine=function(srcNode,idx)
{ if(srcNode.hasChild){for(var i=0;i<srcNode.children.length;i++){srcNode.children[i].lineIcon[idx].src=icons["line"].src;setLine(srcNode.children[i],idx)}}
}
var doSelect=function(srcNode)
{ if(selectedNode!=null){selectedNode.label.style.background="";selectedNode.label.style.color="black";}
srcNode.label.style.background="highlight";srcNode.label.style.color="highlighttext";
selectedNode=srcNode
}
var doFocus=function(srcNode)
{ if(srcNode==selectedNode){srcNode.label.style.background="highlight";srcNode.label.style.color="highlighttext";}
activeNode=srcNode
}
var doBlur=function(srcNode)
{ if(srcNode==selectedNode){srcNode.label.style.background="buttonface";srcNode.label.style.color="windowtext";}
activeNode=null
}
var run=function(cmd,a0,a1,a2)
{
if(typeof(cmd)=="string")
{ try{return eval(cmd);}
catch(E){alert("run script string error:\n"+cmd);}
}
else if(typeof(cmd)=="function"){return cmd(a0,a1,a2);}
}
var doKeyDown=function(srcNode)
{ event.returnValue=false;
switch(event.keyCode)
{ case 38:
if(srcNode.prev==null){if(srcNode.parent!=root){srcNode.parent.focus();srcNode.parent.select();}}
else{var node=srcNode.prev;while(true){if(!node.hasChild || !node.expanded)break;node=node.last;} node.focus();node.select();}
break;
case 40:
if(srcNode.first!=null && srcNode.expanded){srcNode.first.focus();srcNode.first.select();}
else{var node=srcNode;while(true){if(node.next!=null || node.parent==root)break;node=node.parent}if(node.next!=null){node.next.focus();node.next.select();}}
break;
case 189: ;case 109: ;case 37: srcNode.expand(false);break;
case 107: ;case 187: ;case 39: srcNode.expand(true);break;
case 13: srcNode.click();break;
case 27: srcNode.blur();break;
}
}
var addNode=function(toNode,relation,text,key,ico,exeCategory,exeArg)
{
var node={}
var nbody=document.createElement("span")
var container=document.createElement("div")
container.insertAdjacentElement("afterBegin",nbody)
var tier
if(relation==null)relation="last"
if(toNode==root && (relation!="first" && relation!="last"))relation="last"
relation=relation.toLowerCase()
node.first=node.last=node.next=node.prev=null
switch(relation)
{ case "first":
tier=toNode.getTier()+1
if(toNode.hasChild){toNode.children[0].container.insertAdjacentElement("beforeBegin",container);}
else {toNode.container.insertAdjacentElement("beforeEnd",container)}
node.parent=toNode
toNode.children[toNode.children.length]=node
if(toNode.hasChild){node.next=toNode.first;toNode.first.prev=node;toNode.first=node;}
else{toNode.first=toNode.last=node;}
break;
case "next":
tier=toNode.getTier()
toNode.container.insertAdjacentElement("afterEnd",container)
node.parent=toNode.parent
toNode.parent.children[toNode.parent.children.length]=node
if(toNode.next==null)node.parent.last=node
node.next=toNode.next;node.prev=toNode;toNode.next=node;
break;
case "prev":
tier=toNode.getTier()
toNode.container.insertAdjacentElement("beforeBegin",container)
node.parent=toNode.parent
toNode.parent.children[toNode.parent.children.length]=node
if(toNode.prev==null)node.parent.first=node
node.prev=toNode.prev;node.next=toNode;toNode.prev=node
break;
default:
tier=toNode.getTier()+1
toNode.children[toNode.children.length]=node
var o=toNode==root?tree.body:toNode.container
o.insertAdjacentElement("beforeEnd",container)
node.parent=toNode
if(toNode.hasChild){node.prev=toNode.last;toNode.last.next=node;toNode.last=node;}
else{toNode.first=toNode.last=node;}
}
node.parent.hasChild=true
if(depth<tier)depth=tier;
var label=document.createElement("span")
container.style.cssText="margin:0px;padding:0px;white-space:nowrap;"
with(nbody)
{ insertAdjacentElement("beforeEnd",label)
style.cssText="cursor:default;text-align:left;color:black;font-size:10pt;margin:0;"
style.display=node.parent.expanded?"block":"none"
indent=indent>=0?indent:16;nbody.style.textIndent=indent*(tier-1)
}
!!!!!!!!!!!````````````````````
}
catch(e){
tree.err="alai_tree cause run time error!\nError number:"+e.number+".\nError description:"+e.description;
tree.err+="\n    -- \nYou can send the case and error description message to [email protected] for support or visit http://www.9499.net to get the last release!"
alert(tree.err);
return tree;
}}

解决方案 »

  1.   

    - -刚在另一个帖子里跟人说firefox不支持insertAdjacentHTML和insertAdjacentElement,就发现哈,不错,我也自己写个这类的函数方便用。不过,反正都是自己写函数,就干脆用些简短的名字吧。
      

  2.   

    跨浏览器啊,最头疼了
    现在google也在凑热闹,唉
      

  3.   

    为什么不这么写呢?
    if(window.HTMLElement){
        HTMLElement.prototype.insertAdjacentElement=function(where,parsedNode){ 
            switch(where){ 
                case "beforeBegin": 
                    this.parentNode.insertBefore(parsedNode,this); 
                    break; 
                case "afterBegin": 
                    this.insertBefore(parsedNode,this.firstChild); 
                    break; 
                case "beforeEnd": 
                    this.appendChild(parsedNode); 
                    break; 
                case "afterEnd": 
                    if(this.nextSibling) 
                        this.parentNode.insertBefore(parsedNode,this.nextSibling); 
                    else 
                        this.parentNode.appendChild(parsedNode); 
                    break; 
                } 
            } 
        HTMLElement.prototype.insertAdjacentHTML=function(where,htmlStr){ 
            var r=this.ownerDocument.createRange(); 
            r.setStartBefore(this); 
            var parsedHTML=r.createContextualFragment(htmlStr); 
            this.insertAdjacentElement(where,parsedHTML); 
            } 
        HTMLElement.prototype.insertAdjacentText=function(where,txtStr){ 
            var parsedText=document.createTextNode(txtStr); 
            this.insertAdjacentElement(where,parsedText); 
            } 
    }
      

  4.   

    var ifraBody = tabContenIfra.document.getElementsByTagName("body").item(0);
    ifraStrs = fStr.split(",");
    var ifraDiv=document.createElement("div");
    ifraBody.insertAdjacentElement("beforeEnd",ifraDiv);但是这个只能在ie中使用,看看把你写的方法嵌入,看可不可以!