日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ueditor常见用法

發布時間:2024/8/1 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ueditor常见用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.ueditor光標處插入內容使用( inserthtml )

?

UE.getEditor('editor').execCommand('inserthtml', text);

2.ueditor已有內容的末尾追加內容使用

?

UE.getEditor(Emotion.TchUeditor).setContent('testtext', true);

?

3.光標焦點在ueditor顯示使用

UE.getEditor(Emotion.TchUeditor).focus();// 此時光標出現在ueditor最前面

UE.getEditor(Emotion.TchUeditor).focus(true);// 此時光標出現在ueditor最后面

?

4.ueditor中添加一個或多個新的或者改變原有的按鈕(小圖標)

?

UE.registerUI('button', function(editor, uiName) {

????//注冊按鈕執行時的command命令,使用命令默認就會帶有回退操作

????editor.registerCommand(uiName, {

????????execCommand: function() {

????????????alert('execCommand:' + uiName)

????????}

????});

????//創建一個button

????var btn = new UE.ui.Button({

????????//按鈕的名字

????????name: uiName,

????????//提示

????????title: uiName,

????????//添加額外樣式,指定icon圖標,這里默認使用一個重復的icon

????????cssRules: 'background-position: -500px 0;',

????????//點擊時執行的命令

????????onclick: function() {

????????????//這里可以不用執行命令,做你自己的操作也可

????????????editor.execCommand(uiName);

????????}

????});

????//當點到編輯內容上時,按鈕要做的狀態反射

????editor.addListener('selectionchange', function() {

????????var state = editor.queryCommandState(uiName);

????????if (state == -1) {

????????????btn.setDisabled(true);

????????????btn.setChecked(false);

????????} else {

????????????btn.setDisabled(false);

????????????btn.setChecked(state);

????????}

????});

????//因為你是添加button,所以需要返回這個button

????return btn;});

?

添加多個按鈕

UE.registerUI('bold italic redo undo underline strikethrough', function(editor, uiName) {

????//注冊按鈕執行時的command命令,使用命令默認就會帶有回退操作

????editor.registerCommand(uiName, {

????????execCommand: function() {

????????????alert('execCommand:' + uiName)

????????}

????});

????//創建一個button

????var btn = new UE.ui.Button({

????????//按鈕的名字

????????name: uiName,

????????//提示

????????title: uiName,

????????//添加額外樣式,指定icon圖標,這里默認使用一個重復的icon

????????cssRules: 'background-position: -500px 0;',

????????//點擊時執行的命令

????????onclick: function() {

????????????//這里可以不用執行命令,做你自己的操作也可

????????????editor.execCommand(uiName);

????????}

????});

????//當點到編輯內容上時,按鈕要做的狀態反射

????editor.addListener('selectionchange', function() {

????????var state = editor.queryCommandState(uiName);

????????if (state == -1) {

????????????btn.setDisabled(true);

????????????btn.setChecked(false);

????????} else {

????????????btn.setDisabled(false);

????????????btn.setChecked(state);

????????}

????});

????//因為你是添加button,所以需要返回這個button

????return btn;});

?

?

5.Ueditor常見API列表總結(官網上有)

?

?

實例化編輯器到id?container?dom 容器上:詳細

var ue = UE.getEditor('container');

設置編輯器內容:詳細

ue.ready(function() {

????ue.setContent('<p>hello!</p>');});

追加編輯器內容:詳細

ue.ready(function() {

????ue.setContent('<p>new text</p>', true);});

獲取編輯器html內容:詳細

ue.ready(function() {

????var html = ue.getContent();});

獲取純文本內容:詳細

ue.getContentTxt();

獲取保留格式的文本內容:詳細

ue.getPlainTxt();

獲取純文本內容:詳細

ue.getContentTxt();

判斷編輯器是否有內容:詳細

ue.hasContents();

讓編輯器獲得焦點:詳細

ue.focus();

讓編輯器獲得焦點

ue.blur();

判斷編輯器是否獲得焦點:詳細

ue.isFocus();

設置當前編輯區域不可編輯:詳細

ue.setDisabled();

設置當前編輯區域可以編輯:詳細

ue.setEnabled();

隱藏編輯器:詳細

ue.setHide();

顯示編輯器:詳細

ue.setShow();

獲得當前選中的文本:詳細

ue.selection.getText();

常用命令:詳細

在當前光標位置插入html內容

ue.execCommand('inserthtml', '<span>hello!</span>');

設置當前選區文本格式:詳細

ue.execCommand('bold'); //加粗

ue.execCommand('italic'); //加斜線

ue.execCommand('subscript'); //設置上標

ue.execCommand('supscript'); //設置下標

ue.execCommand('forecolor', '#FF0000'); //設置字體顏色

ue.execCommand('backcolor', '#0000FF'); //設置字體背景顏色

回退編輯器內容:詳細

ue.execCommand('undo');

撤銷回退編輯器內容:詳細

ue.execCommand('redo');

切換源碼和可視化編輯模式:詳細

ue.execCommand('source');

選中所有內容:詳細

ue.execCommand('selectall');

清空內容:詳細

ue.execCommand('cleardoc');

讀取草稿箱

ue.execCommand('drafts');

清空草稿箱

ue.execCommand('clearlocaldata');

?

?

6.Ueditor常見問題

?

實例創建后為什么直接執行接口報錯

場景

開發者在創建編輯器時后,會執行一些接口或者調用編輯命令,例如

var ue = UE.getEditor('editor');

ue.setContent('初始化的內容');//或者調用命令//ue.execCommand('inserthtml','內容');

這些代碼看起來沒有問題,編輯器實例也能正確拿到,但就是沒有效果。

UEditor創建編輯區域的原理

其實出現這種問題,其實是大家不了解UEditor的創建原理導致的。因為UEditor的編輯區域是使用iframe作為編輯容器的。所以當編輯器創建實例后,先會創建一個iframe元素,然后在iframe元素中寫入一些腳本,這些腳本會在iframe元素初始化完成時被調用。腳本的作用主要是為編輯器實例賦值iframe中的body,window,document對象的引用。 看到這里,大家就應該明白UEditor的初始化過程其實是個異步過程。

因為是個異步過程。所以場景中的書寫方式就會出現問題了。雖然工廠方法getEditor能正確返回編輯器實例,但同步的代碼ue.setContent馬上就被執行了,因為setContent是在編輯容器中寫內容,這時需要用到body,document等元素,但這些元素的引用賦值卻在異步中才做的賦值。所以才會出現直接執行setContent時會出現無效的問題。當然有時不同瀏覽器的效果會出現不同。一些高級的瀏覽器比如chrome有時是可以的,但大部分ie瀏覽器都不行。這主要是因為瀏覽器的性能所致的。

那正確的方式是什么呢?

正確的初始化方式

UEditor為開發者提供了ready接口,他會在編輯器所有的初始化操作都結束時調用。保證你要做的操作能在一個完整的初始化環境中執行。

UE.getEditor('editor').ready(function() {

????//this是當前創建的編輯器實例

????this.setContent('內容')})

UEditor的老用戶會說,不是還有個addListener可以注冊ready事件嗎?

UE.getEditor('editor').addListener('ready', function() {

????//this是當前創建的編輯器實例

????this.setContent('內容')})

確實這樣寫也能達到效果,但這樣創建有個小問題。如果的這段代碼是用在第一次創建時就沒有問題。但如果編輯器已經創建,你需要再次賦值,想使用同一段代碼,這時,這里的事件ready是不會觸發的。但你調用接口ready注入你的操作,這種方式,會判斷如果你的編輯器已經初始化完成了,那ready將會自動加載注入的內容,如果還沒有初始化結束,它會自己注冊ready事件,當完成初始化后再掉起自己。所以建議開發者使用ready接口作為初始化時注入操作。

?

如何自定義請求地址

本文檔說明修改請求地址的方法。

應用場景

ueditor 1.4.2+ 推薦使用唯一的請求地址,通過GET參數action指定不同請求類型。 但很多用戶都希望使用自己寫好的上傳地址,下面提供一種解決方法: 由于所有ueditor請求都通過editor對象的getActionUrl方法獲取請求地址,可以直接通過復寫這個方法實現,例子如下:

UE.Editor.prototype._bkGetActionUrl = UE.Editor.prototype.getActionUrl;

UE.Editor.prototype.getActionUrl = function(action) {

????if (action == 'uploadimage' || action == 'uploadscrawl' || action == 'uploadimage') {

????????return 'http://a.b.com/upload.php';

????} else if (action == 'uploadvideo') {

????????return 'http://a.b.com/video.php';

????} else {

????????return this._bkGetActionUrl.call(this, action);

????}}

action類型以及說明

uploadimage//執行上傳圖片或截圖的action名稱

uploadscrawl//執行上傳涂鴉的action名稱

uploadvideo//執行上傳視頻的action名稱

uploadfile//controller,執行上傳視頻的action名稱

catchimage//執行抓取遠程圖片的action名稱

listimage//執行列出圖片的action名稱

listfile//執行列出文件的action名稱

?

如何阻止div標簽自動轉換為p標簽

背景:

剛開始使用UEditor的開發者,會發現一個現象,粘貼到編輯器中的內容如果帶有div標簽,待粘貼到編輯器之后,會發現粘貼到編輯器中的div已經被轉換為p標簽了。首先這不是一個bug,這是UEditor對于進入編輯器中的數據進行的過濾處理。在UEditor中表示段落的標簽是p標簽,很多的編輯操作都是基于p標簽進行的處理。當然我們對div標簽也做了兼容性的處理,如果你想保留div標簽不讓UEditor進行轉換也是可以的。

?

阻止轉換:

UE.getEditor('editorID', {

allowDivTransToP: false

})

總結

以上是生活随笔為你收集整理的ueditor常见用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。