国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網(wǎng)站 > WEB開發(fā) > 正文

Ueditor解決safari瀏覽器粘貼圖片問題

2024-04-27 15:08:30
字體:
供稿:網(wǎng)友

1.修改ueditor.all.js文件中的inserthtml函數(shù)

/**

 * 插入html代碼

 * @command inserthtml

 * @method execCommand

 * @param { String } cmd 命令字符串

 * @param { String } html 插入的html字符串

 * @remaind 插入的標(biāo)簽內(nèi)容是在當(dāng)前的選區(qū)位置上插入,如果當(dāng)前是閉合狀態(tài),那直接插入內(nèi)容, 如果當(dāng)前是選中狀態(tài),將先清除當(dāng)前選中內(nèi)容后,再做插入

 * @warning 注意:該命令會(huì)對(duì)當(dāng)前選區(qū)的位置,對(duì)插入的內(nèi)容進(jìn)行過濾轉(zhuǎn)換處理。 過濾的規(guī)則遵循h(huán)tml語意化的原則。

 * @example

 * ```javascr

    execCommand: function (command,html,notNeedFilter){

        var me = this,

            range,

            div;

        if(!html){

            return;

        }

        if(me.fireEvent('beforeinserthtml',html) ===true){

            return;

        }

        range = me.selection.getRange();

        div = range.document.createElement( 'div' );

        div.style.display = 'inline';

 

        if (!notNeedFilter) {

            var root = UE.htmlparser(html);

            //如果給了過濾規(guī)則就先進(jìn)行過濾

            if(me.options.filterRules){

                UE.filterNode(root,me.options.filterRules);

            }

            //執(zhí)行默認(rèn)的處理

            me.filterInputRule(root);

            html = root.toHtml()

        }

        // 禁止safari瀏覽器

        if (html.indexOf('webkit-fake-url')>0 || html.indexOf('image.tiff')>0) {

        if (window.BrowserEvent) {

        // safari粘貼圖片彈窗提示

        BrowserEvent.PReventPasteTip();

        

        setTimeout("BrowserEvent.PreventPasteTip();", 1000);

        }

        return;

        }

        div.innerHTML = utils.trim( html );

 

        if ( !range.collapsed ) {

            var tmpNode = range.startContainer;

            if(domUtils.isFillChar(tmpNode)){

                range.setStartBefore(tmpNode)

            }

            tmpNode = range.endContainer;

            if(domUtils.isFillChar(tmpNode)){

                range.setEndAfter(tmpNode)

            }

            range.txtToElmBoundary();

            //結(jié)束邊界可能放到了br的前邊,要把br包含進(jìn)來

            // x[xxx]<br/>

            if(range.endContainer && range.endContainer.nodeType == 1){

                tmpNode = range.endContainer.childNodes[range.endOffset];

                if(tmpNode && domUtils.isBr(tmpNode)){

                    range.setEndAfter(tmpNode);

                }

            }

            if(range.startOffset == 0){

                tmpNode = range.startContainer;

                if(domUtils.isBoundaryNode(tmpNode,'firstChild') ){

                    tmpNode = range.endContainer;

                    if(range.endOffset == (tmpNode.nodeType == 3 ? tmpNode.nodeValue.length : tmpNode.childNodes.length) && domUtils.isBoundaryNode(tmpNode,'lastChild')){

                        me.body.innerHTML = '<p>'+(browser.ie ? '' : '<br/>')+'</p>';

                        range.setStart(me.body.firstChild,0).collapse(true)

 

                    }

                }

            }

            !range.collapsed && range.deleteContents();

            if(range.startContainer.nodeType == 1){

                var child = range.startContainer.childNodes[range.startOffset],pre;

                if(child && domUtils.isBlockElm(child) && (pre = child.previousSibling) && domUtils.isBlockElm(pre)){

                    range.setEnd(pre,pre.childNodes.length).collapse();

                    while(child.firstChild){

                        pre.appendChild(child.firstChild);

                    }

                    domUtils.remove(child);

                }

            }

 

        }

        var child,parent,pre,tmp,hadBreak = 0, nextNode;

        //如果當(dāng)前位置選中了fillchar要干掉,要不會(huì)產(chǎn)生空行

        if(range.inFillChar()){

            child = range.startContainer;

            if(domUtils.isFillChar(child)){

                range.setStartBefore(child).collapse(true);

                domUtils.remove(child);

            }else if(domUtils.isFillChar(child,true)){

                child.nodeValue = child.nodeValue.replace(fillCharReg,'');

                range.startOffset--;

                range.collapsed && range.collapse(true)

            }

        }

        //列表單獨(dú)處理

        var li = domUtils.findParentByTagName(range.startContainer,'li',true);

        if(li){

            var next,last;

            while(child = div.firstChild){

                //針對(duì)hr單獨(dú)處理一下先

                while(child && (child.nodeType == 3 || !domUtils.isBlockElm(child) || child.tagName=='HR' )){

                    next = child.nextSibling;

                    range.insertNode( child).collapse();

                    last = child;

                    child = next;

 

                }

                if(child){

                    if(/^(ol|ul)$/i.test(child.tagName)){

                        while(child.firstChild){

                            last = child.firstChild;

                            domUtils.insertAfter(li,child.firstChild);

                            li = li.nextSibling;

                        }

                        domUtils.remove(child)

                    }else{

                        var tmpLi;

                        next = child.nextSibling;

                        tmpLi = me.document.createElement('li');

                        domUtils.insertAfter(li,tmpLi);

                        tmpLi.appendChild(child);

                        last = child;

                        child = next;

                        li = tmpLi;

                    }

                }

            }

            li = domUtils.findParentByTagName(range.startContainer,'li',true);

            if(domUtils.isEmptyBlock(li)){

                domUtils.remove(li)

            }

            if(last){

 

                range.setStartAfter(last).collapse(true).select(true)

            }

        }else{

            while ( child = div.firstChild ) {

                if(hadBreak){

                    var p = me.document.createElement('p');

                    while(child && (child.nodeType == 3 || !dtd.$block[child.tagName])){

                        nextNode = child.nextSibling;

                        p.appendChild(child);

                        child = nextNode;

                    }

                    if(p.firstChild){

 

                        child = p

                    }

                }

                range.insertNode( child );

                nextNode = child.nextSibling;

                if ( !hadBreak && child.nodeType == domUtils.NODE_ELEMENT && domUtils.isBlockElm( child ) ){

 

                    parent = domUtils.findParent( child,function ( node ){return domUtils.isBlockElm( node ); } );

                    if ( parent && parent.tagName.toLowerCase() !='body' && !(dtd[parent.tagName][child.nodeName] && child.parentNode === parent)){

                        if(!dtd[parent.tagName][child.nodeName]){

                            pre = parent;

                        }else{

                            tmp = child.parentNode;

                            while (tmp !== parent){

                                pre = tmp;

                                tmp = tmp.parentNode;

 

                            }

                        }

 

 

                        domUtils.breakParent( child, pre || tmp );

                        //去掉break后前一個(gè)多余的節(jié)點(diǎn)  <p>|<[p> ==> <p></p><div></div><p>|</p>

                        var pre = child.previousSibling;

                        domUtils.trimWhiteTextNode(pre);

                        if(!pre.childNodes.length){

                            domUtils.remove(pre);

                        }

                        //trace:2012,在非ie的情況,切開后剩下的節(jié)點(diǎn)有可能不能點(diǎn)入光標(biāo)添加br占位

 

                        if(!browser.ie &&

                            (next = child.nextSibling) &&

                            domUtils.isBlockElm(next) &&

                            next.lastChild &&

                            !domUtils.isBr(next.lastChild)){

                            next.appendChild(me.document.createElement('br'));

                        }

                        hadBreak = 1;

                    }

                }

                var next = child.nextSibling;

                if(!div.firstChild && next && domUtils.isBlockElm(next)){

 

                    range.setStart(next,0).collapse(true);

                    break;

                }

                range.setEndAfter( child ).collapse();

 

            }

 

            child = range.startContainer;

 

            if(nextNode && domUtils.isBr(nextNode)){

                domUtils.remove(nextNode)

            }

            //用Chrome可能有空白展位符

            if(domUtils.isBlockElm(child) && domUtils.isEmptyNode(child)){

                if(nextNode = child.nextSibling){

                    domUtils.remove(child);

                    if(nextNode.nodeType == 1 && dtd.$block[nextNode.tagName]){

 

                        range.setStart(nextNode,0).collapse(true).shrinkBoundary()

                    }

                }else{

 

                    try{

                        child.innerHTML = browser.ie ? domUtils.fillChar : '<br/>';

                    }catch(e){

                        range.setStartBefore(child);

                        domUtils.remove(child)

                    }

 

                }

 

            }

            //加上true因?yàn)樵趧h除表情等時(shí)會(huì)刪兩次,第一次是刪的fillData

            try{

                range.select(true);

            }catch(e){}

 

        }

 

        setTimeout(function(){

            range = me.selection.getRange();

            // 此行代碼是控制插入表情之后頁面滾動(dòng)的

//            range.scrollToView(me.autoHeightEnabled,me.autoHeightEnabled ? domUtils.getXY(me.iframe).y:0);

            me.fireEvent('afterinserthtml', html);

        },200);

    }

};


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 阿克陶县| 奎屯市| 屏山县| 黑山县| 莲花县| 五大连池市| 正蓝旗| 阿拉尔市| 民和| 来宾市| 虎林市| 喜德县| 双鸭山市| 巨鹿县| 泰和县| 武胜县| 长顺县| 迁安市| 霍邱县| 桂林市| 昭觉县| 柞水县| 绿春县| 商城县| 南雄市| 武宁县| 寿阳县| 称多县| 正安县| 五河县| 玉树县| 鄱阳县| 沈丘县| 奎屯市| 晋城| 白山市| 东阿县| 邵阳市| 边坝县| 抚州市| 清水县|