关于百度富文本编辑器UEditor中ctrl+enter键发送消息的解决方案
最近一個消息插件中遇到一個特殊需求,就是一旦ueditor編輯器獲取焦點以后,除非讓編輯器失去焦點,否則window的鍵盤監聽事件就失去作用了,在這種情況下如何才能使用ctrl+enter發送已經編輯好的內容呢?上網搜了好多,發現大家都遇到這個問題了,這里我將我自己的解決方案整理處理,與大家分享,能力有限,如有問題,歡迎指正,大神勿噴~
首先我們看看ueditor/ueditor.all.js中這么一句話
UE.plugin.register('autosubmit',function(){
? ? return {
? ? ? ? shortcutkey:{
? ? ? ? ? ? "autosubmit":"ctrl+13" //手動提交
? ? ? ? },
? ? ? ? commands:{
? ? ? ? ? ? 'autosubmit':{
? ? ? ? ? ? ? ? execCommand:function () {
? ? ? ? ? ? ? ? ? ? var me=this,
? ? ? ? ? ? ? ? ? ? ? ? form = domUtils.findParentByTagName(me.iframe,"form", false);
? ? ? ? ? ? ? ? ? ? if (form){
? ? ? ? ? ? ? ? ? ? ? ? if(me.fireEvent("beforesubmit")===false){
? ? ? ? ? ? ? ? ? ? ? ? ? ? return;
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? me.sync();
? ? ? ? ? ? ? ? ? ? ? ? form.submit();
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }
? ? }
});
/********************************/
? ? ? ? ? ?var me=this,
? ? ? ? ? ?form = domUtils.findParentByTagName(me.iframe,"form", false);
? ? ? ? ? ?if (form){
? ? ? ? ? ? ? ?if(me.fireEvent("beforesubmit")===false){
? ? ? ? ? ? ? ? ? ? ? return;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ?me.sync();
? ? ? ? ? ? ? ? ? form.submit();
? ? ? ? ? ? ?}
/**********************************/
將這段話換成:
? ? ? ?自己的提交方法 XXX();(假如頁面中已經存在js function XXX(){ ? })
注意事項:
1、注意頁面中引入的是ueditor.all.min.js還是ueditor.all.js,用哪個改那個;
2、改的時候一定要定準{}()這些元素,一不小心多刪一個或者少刪一個就會出現問題
3、其實還有一種方式:
? ? var ue=UM.getEditor('myEditor');
? ? ?ue.addListener("focus", function (type, event) { ?//這里的focus可以視自己的情況定,可以使blur,keypress等等
? ? ? ? ? ? alert("事件觸發");
? ? ?});
理論上這種方式也可以實現,但是由于當focus位置是keypress的時候,依舊獲取監聽不了ctrl鍵(even.keyCode==17||event.ctrlKey均觸發不了),讓人挺郁悶的~
4、網上搜到這么一種:
UE.dom.domUtils.on(self.ue.body, 'keypress', function(event){
if(event.keyCode == 13){
alert('enter ok');
event.preventDefault();?
event.stopPropagation();
self.sendMsg();
}
});
不知道為什么,這種方式我從來沒成功過。。。
總結
以上是生活随笔為你收集整理的关于百度富文本编辑器UEditor中ctrl+enter键发送消息的解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 8月总结抽奖
- 下一篇: 网络:WiFi6和WiFi5的区别介绍