我正在使用bootstrap-wysiwyg editor(mindmup)
. 在该编辑器工具中,我正在使用包含模板名称的自定义下拉菜单。模板是文本,有些是 html。下拉列表的javascript函数如下
function loadTemplate(templateId) {
$.post('/Template/GetTemplateDetails', { id: templateId }, function (data, textStatus) {
if (textStatus == "success") {
insertTextAtCursor(data.PreFilledText);
}
}, "json"); }
insertTextAtCursor 函数代码如下
function insertTextAtCursor(text) {
var sel, range, html;
if (window.getSelection) {
sel = window.getSelection();
if (sel.getRangeAt && sel.rangeCount) {
range = sel.getRangeAt(0);
range.deleteContents();
range.insertNode(document.createTextNode(text));
}
} else if (document.selection && document.selection.createRange) {
document.selection.createRange().text = text;
} }
我的问题是,如果模板是 html 代码,那么“insertTextAtCursor”函数会返回原始 html,但它适用于文本。当我使用$('#editor').html(data.PreFilledText);
而不是insertTextAtCursor(data.PreFilledText);
内部 loadTemplate 函数时,它工作正常,但我无法在光标点选择另一个模板。
因此,任何人都可以帮助我自定义使用 document.createTextNode 的“insertTextAtCursor”函数以在编辑器文本区域中同时允许文本和 html,或者还有其他选项吗?