//solved firefox couldn't support insertAdjacentElement
function insertAdjacentElement(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;
    }
}
//obj.insertAdjacentElement(where,parsedNode);

解决方案 »

  1.   

    <script type="text/javascript">
    HTMLElement.prototype.insertAdjacentHTML = function (sWhere, sHTML) {
    //BlueDestiny
        var df; var r = this.ownerDocument.createRange();
        switch (String(sWhere).toLowerCase()) {
            case "beforebegin":
                r.setStartBefore(this);
                df = r.createContextualFragment(sHTML);
                this.parentNode.insertBefore(df, this);
                break;
            case "afterbegin":
                r.selectNodeContents(this);
                r.collapse(true);
                df = r.createContextualFragment(sHTML);
                this.insertBefore(df, this.firstChild);
                break;
            case "beforeend":
                r.selectNodeContents(this);
                r.collapse(false);
                df = r.createContextualFragment(sHTML);
                this.appendChild(df);
                break;
            case "afterend":
                r.setStartAfter(this);
                df = r.createContextualFragment(sHTML);
                this.parentNode.insertBefore(df, this.nextSibling);
                break;
        }
    };
    </script>