ueditor加个点击关键字出现下拉框
时间: 2023-10-16 11:06:08 浏览: 109
对于此功能,需要使用ueditor提供的自定义插件和事件来实现。
1. 编写自定义插件
在ueditor的plugins目录下新建一个文件夹,比如命名为myplugin,然后在该文件夹中新建一个js文件,比如命名为myplugin.js。在myplugin.js中编写插件的代码,具体实现方式可以参考ueditor官方文档中的插件开发部分。
2. 注册插件
在ueditor的配置文件中,添加以下代码,将myplugin插件注册到ueditor中:
```javascript
UEDITOR_CONFIG.toolbars = [
['myplugin']
];
UEDITOR_CONFIG.UEDITOR_HOME_URL = '/static/ueditor/'; //ueditor的根目录,需要根据实际情况修改
UEDITOR_CONFIG.serverUrl = '/upload/'; //ueditor上传文件的后端接口,需要根据实际情况修改
UEDITOR_CONFIG.autoHeightEnabled = true; //自适应高度
UEDITOR_CONFIG.maximumWords = 100000; //最大允许输入的字数
UEDITOR_CONFIG.wordCountMsg = '已输入{#count}个字符,还可以输入{#leave}个字符'; //输入字数提示
UEDITOR_CONFIG.wordOverFlowMsg = '已超出{#overflow}个字符'; //超出字数提示
UEDITOR_CONFIG.elementPathEnabled = false; //禁用元素路径
UEDITOR_CONFIG.toolbarTopOffset = 30; //顶部工具栏距离顶部的距离
UEDITOR_CONFIG.plugins = ['myplugin']; //注册插件
```
3. 绑定事件
在页面中,使用以下代码绑定点击事件:
```javascript
UE.getEditor('editor').addListener('click', function () {
var range = this.selection.getRange();
var text = range.getText();
if (/关键字/.test(text)) { //判断是否包含关键字
var keywords = ['关键字1', '关键字2', '关键字3']; //下拉框中的关键字列表
var html = '';
for (var i = 0; i < keywords.length; i++) {
html += '<li>' + keywords[i] + '</li>';
}
var $menu = $('<ul class="menu">' + html + '</ul>'); //创建下拉框
$menu.css({
position: 'absolute',
top: range.startContainer.offsetTop + range.endContainer.offsetTop + range.endOffset * 20 + 10,
left: range.startContainer.offsetLeft + (range.endContainer.offsetLeft - range.startContainer.offsetLeft) * range.startOffset / range.startContainer.innerText.length
});
$menu.appendTo('body');
$menu.find('li').click(function () {
range.selectNodeContents(range.startContainer);
range.deleteContents();
range.insertNode(document.createTextNode($(this).text()));
$menu.remove();
});
$(document).click(function (e) {
if ($(e.target).closest('.menu').length === 0) {
$menu.remove();
}
});
}
});
```
以上代码中,需要将editor替换成实际的编辑器id。关键字列表和下拉框的样式可以根据实际情况进行修改。代码中的注释已经说明了各个部分的功能。
阅读全文