vue集成ueditor的注意事項(xiàng)

vue集成ueditor是時(shí)候遇到一些坑,分享一下,不定期更新
(有錯(cuò)誤望指正)

1.上傳的接口跨域問(wèn)題

現(xiàn)象說(shuō)明

ueditor默認(rèn)檢到上傳的圖片接口和本站域名不一致會(huì)啟用dataType為jsonp的方式傳輸,但是后端接口不支持jsonp

解決方法

ueditor/ueditor.all.js 8083行
注釋 isJsonp = utils.isCrossDomainUrl(configUrl);
改為 isJsonp=false

....
// core/loadconfig.js
(function(){
 
    UE.Editor.prototype.loadServerConfig = function(){
        var me = this;
        setTimeout(function(){
            try{
                me.options.imageUrl && me.setOpt('serverUrl', me.options.imageUrl.replace(/^(.*[\/]).+([\.].+)$/, '$1controller$2'));
 
                var configUrl = me.getActionUrl('config'),
                    // isJsonp = utils.isCrossDomainUrl(configUrl);
                    isJsonp = false;
 
                /* 發(fā)出ajax請(qǐng)求 */
                me._serverConfigLoaded = false;
 
                configUrl && UE.ajax.request(configUrl,{
                    'method': 'GET',
                    'dataType': isJsonp ? 'jsonp':'',
                    'onsuccess':function(r){
                        try {
                            var config = isJsonp ? r:eval("("+r.responseText+")");
                            utils.extend(me.options, config);
                            me.fireEvent('serverConfigLoaded');
                            me._serverConfigLoaded = true;
                        } catch (e) {
                            showErrorMsg(me.getLang('loadconfigFormatError'));
                        }
                    },
                    'onerror':function(){
                        showErrorMsg(me.getLang('loadconfigHttpError'));
                    }
                });
            } catch(e){
                showErrorMsg(me.getLang('loadconfigError'));
            }
        });
 
        function showErrorMsg(msg) {
            console && console.error(msg);
            //me.fireEvent('showMessage', {
            //    'title': msg,
            //    'type': 'error'
            //});
        }
    };
 
    UE.Editor.prototype.isServerConfigLoaded = function(){
        var me = this;
        return me._serverConfigLoaded || false;
    };
 
    UE.Editor.prototype.afterConfigReady = function(handler){
        if (!handler || !utils.isFunction(handler)) return;
        var me = this;
        var readyHandler = function(){
            handler.apply(me, arguments);
            me.removeListener('serverConfigLoaded', readyHandler);
        };
 
        if (me.isServerConfigLoaded()) {
            handler.call(me, 'serverConfigLoaded');
        } else {
            me.addListener('serverConfigLoaded', readyHandler);
        }
    };
 
})();
....

2.圖片上傳需要鑒權(quán)的問(wèn)題

現(xiàn)象說(shuō)明

后臺(tái)上傳圖片接口需要鑒權(quán)(請(qǐng)求的header里面需要加上Authorization),但是百度編輯器沒(méi)有提供這樣的配置

解決方法

/ueditor/dialogs/image/image.js 707行
在header['X_Requested_With'] = 'XMLHttpRequest';下面添加
header['Authorization']=window.localStorage.getItem('token');

uploader.on('uploadBeforeSend', function (file, data, header) {
    var token = window.localStorage.getItem('token') || '';
    if (token) {
       header['Authorization']=token;
    }
    //這里可以通過(guò)data對(duì)象添加POST參數(shù)
    header['X_Requested_With'] = 'XMLHttpRequest';
});

3.隱藏其他圖片上傳方式

現(xiàn)象說(shuō)明

需要隱藏下面的按鈕


image.png

解決方法

ueditor/dialogs/image/image.html 21行
注釋對(duì)應(yīng)顯示的html代碼

<div id="tabhead" class="tabhead">
    <!-- <span class="tab" data-content-id="remote"><var id="lang_tab_remote"></var></span> -->
    <span class="tab focus" data-content-id="upload"><var id="lang_tab_upload"></var></span>
    <!-- <span class="tab" data-content-id="online"><var id="lang_tab_online"></var></span>
    <span class="tab" data-content-id="search"><var id="lang_tab_search"></var></span> -->
</div>

4.按下shift鍵再按其他鍵時(shí),不觸發(fā)contentChange事件

現(xiàn)象說(shuō)明

百度編輯的輸入框不能輸入~!@#$%^&*()等特殊字符,
原因是百度編輯器keydown事件過(guò)濾了shiftKey

解決方法

ueditor.all.js:14391行
將if (!keys[keyCode] && !evt.ctrlKey && !evt.metaKey && !evt.shiftKey && !evt.altKey) {
中的!evt.shiftKey判斷條件移除

me.addListener('keydown', function (type, evt) {
 
    var me = this;
    var keyCode = evt.keyCode || evt.which;
    if (!keys[keyCode] && !evt.ctrlKey && !evt.metaKey && !evt.altKey) {
        if (inputType)
            return;
 
        if(!me.selection.getRange().collapsed){
            me.undoManger.save(false,true);
            isCollapsed = false;
            return;
        }
        if (me.undoManger.list.length == 0) {
            me.undoManger.save(true);
        }
        clearTimeout(saveSceneTimer);
        function save(cont){
            cont.undoManger.save(false,true);
            cont.fireEvent('selectionchange');
        }
        saveSceneTimer = setTimeout(function(){
            if(inputType){
                var interalTimer = setInterval(function(){
                    if(!inputType){
                        save(me);
                        clearInterval(interalTimer)
                    }
                },300)
                return;
            }
            save(me);
        },200);
 
        lastKeyCode = keyCode;
        keycont++;
        if (keycont >= maxInputCount ) {
            save(me)
        }
    }
});

5.編輯器功能部分不能使用

現(xiàn)象說(shuō)明

編輯器添加序列功能部分不能使用,原因百度編輯器使用圖片實(shí)現(xiàn)樣式的,但是圖片的地址掛了


image.png

解決方法

注釋
insertorderedlist 的一些選項(xiàng)
ueditor/ueditor.config.js

   ,'insertorderedlist':{
     //自定的樣式
    // 'num':'1,2,3...',
    // 'num1':'1),2),3)...',
    // 'num2':'(1),(2),(3)...',
    // 'cn':'一,二,三....',
    // 'cn1':'一),二),三)....',
    // 'cn2':'(一),(二),(三)....',
    //系統(tǒng)自帶
    'decimal' : '' ,         //'1,2,3...'
    'lower-alpha' : '' ,    // 'a,b,c...'
    'lower-roman' : '' ,    //'i,ii,iii...'
    'upper-alpha' : '' , //lang   //'A,B,C'
    'upper-roman' : ''      //'I,II,III...'
}

6.IE11及以下部分瀏覽器下不能發(fā)出ajax請(qǐng)求

現(xiàn)象說(shuō)明

ie11不能上傳圖片是因?yàn)闆](méi)有發(fā)起獲取配置的請(qǐng)求,
沒(méi)有發(fā)起請(qǐng)求是百度編輯器源碼有漏洞

解決方法

將以前的

//創(chuàng)建一個(gè)ajaxRequest對(duì)象
var fnStr = 'XMLHttpRequest()';
try {
    new ActiveXObject("Msxml2.XMLHTTP");
    fnStr = 'ActiveXObject(\'Msxml2.XMLHTTP\')';
} catch (e) {
    try {
        new ActiveXObject("Microsoft.XMLHTTP");
        fnStr = 'ActiveXObject(\'Microsoft.XMLHTTP\')'
    } catch (e) {
    }
}
var creatAjaxRequest = new Function('return new ' + fnStr);

改為

//創(chuàng)建一個(gè)ajaxRequest對(duì)象
var fnStr = '';
try {
    new XMLHttpRequest();
    fnStr = 'XMLHttpRequest()';
} catch (error) {
    try {
        new ActiveXObject("Msxml2.XMLHTTP");
        fnStr = 'ActiveXObject(\'Msxml2.XMLHTTP\')';
    } catch (e) {
        try {
            new ActiveXObject("Microsoft.XMLHTTP");
            fnStr = 'ActiveXObject(\'Microsoft.XMLHTTP\')'
        } catch (e) {
        }
    }
}
var creatAjaxRequest = new Function('return new ' + fnStr);
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末颤芬,一起剝皮案震驚了整個(gè)濱河市悲幅,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件脑奠,死亡現(xiàn)場(chǎng)離奇詭異待逞,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)虚茶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人聚蝶,你說(shuō)我怎么就攤上這事≡逯危” “怎么了碘勉?”我有些...
    開(kāi)封第一講書人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)桩卵。 經(jīng)常有香客問(wèn)我验靡,道長(zhǎng),這世上最難降的妖魔是什么雏节? 我笑而不...
    開(kāi)封第一講書人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任胜嗓,我火速辦了婚禮,結(jié)果婚禮上钩乍,老公的妹妹穿的比我還像新娘辞州。我一直安慰自己,他們只是感情好寥粹,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布变过。 她就那樣靜靜地躺著埃元,像睡著了一般。 火紅的嫁衣襯著肌膚如雪牵啦。 梳的紋絲不亂的頭發(fā)上亚情,一...
    開(kāi)封第一講書人閱讀 51,554評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音哈雏,去河邊找鬼楞件。 笑死,一個(gè)胖子當(dāng)著我的面吹牛裳瘪,可吹牛的內(nèi)容都是我干的土浸。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼彭羹,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼黄伊!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起派殷,我...
    開(kāi)封第一講書人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤还最,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后毡惜,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體拓轻,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年经伙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了扶叉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡帕膜,死狀恐怖枣氧,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情垮刹,我是刑警寧澤达吞,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站荒典,受9級(jí)特大地震影響宗挥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜种蝶,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望瞒大。 院中可真熱鬧螃征,春花似錦、人聲如沸透敌。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至魄藕,卻和暖如春内列,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背背率。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工话瞧, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人寝姿。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓交排,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親饵筑。 傳聞我的和親對(duì)象是個(gè)殘疾皇子埃篓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,133評(píng)論 25 707
  • 周五下午兩點(diǎn)玄帕,在上交理賠款之后部脚,一二班黑板事件,正式告一段落桨仿!兩個(gè)月的相處睛低、溝通,與孩子們更加熟悉服傍、了解钱雷。從這個(gè)事...
    茶與書閱讀 273評(píng)論 0 1
  • 視圖控制器 1. 為什么要有視圖控制器 我們開(kāi)發(fā)中,可能會(huì)遇到某個(gè)界面比較復(fù)雜吹零,要進(jìn)行多個(gè)界面的切換罩抗,如果把這些界...
    Grt婷閱讀 229評(píng)論 0 0
  • 諸葛亮可以說(shuō)是三國(guó)時(shí)代最閃耀的一顆亮星套蒂。諸葛亮的本事,自不必多說(shuō)茫蛹。那么操刀,諸葛亮的朋友會(huì)是什么樣的人呢? 《三國(guó)志》...
    指南偵閱讀 1,841評(píng)論 0 6
  • 引子:區(qū)塊鏈?zhǔn)且粋€(gè)極具爭(zhēng)議性的話題。一方面,它是魔鬼欢唾,被人用來(lái)包裝項(xiàng)目且警,成為21世紀(jì)最佳割韭菜利器。一方面礁遣,它是天...
    旺財(cái)小助手閱讀 231評(píng)論 0 0