1

我正在使用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,或者还有其他选项吗?

4

0 回答 0