如何将带有“ <>”字符的文本作为纯文本插入TinyMCE,而不将其视为HTML标记

时间:2019-03-07 05:44:13

标签: javascript html wordpress tinymce

在我的项目中,我使用了TinyMCE文本编辑器。我还有一个按钮,当单击该按钮时,我的javascript代码会将按钮中的值复制到文本编辑器中。

例如:如果按钮值为[first_name],则单击按钮会将文本[first_name](wordpress中的短代码格式)放入文本编辑器。

可以,但是现在我将按钮值从[first_name]更改为<<first_name>>。当我单击按钮时,应该将<<first_name>>放到文本编辑器中,但是只放<>。由于文本编辑器将<<first_name>>视为HTML标记,因此无法充分发挥价值。

此外,我尝试使用诸如&lt;&gt;之类的HTML实体,但是它也不起作用。

注意:它不应是源代码编辑器。它必须是一个简单的文本编辑器。

有人可以指导我如何解决此问题吗?

我的HTML代码:

按钮部分-

<div class="panel-body">
<div class="col-md-6" style="margin-bottom: 10px;">
<a class="btn btn-primary sInput_netadvimage" href="<<first_name>>" style="width: 100%">FIRST NAME</a>
</div>
<div class="col-md-6" style="margin-bottom: 10px;">
<a class="btn btn-primary sInput_netadvimage" href="<<company_name>>" style="width: 100%">COMPANY NAME</a>
</div>
</div>
</div>

文本编辑器部分

<textarea name="content[]" id="tedit-1" class="tmeditor contentfield" name="area"></textarea>

jQuery部分

$(document.body).on('blur', '.contentfield', function() {
    currentreplaceelement = $(this);
});

$(document.body).on('click', ".sInput_netadvimage", function(e) {
    e.preventDefault();

    var code = $(this).attr('href');
    alert(code);
    if (currentreplaceelement != '') {
        if (currentreplaceelement.hasClass('subjectfield')) {
            var a = currentreplaceelement.val();
            var output = [a.slice(0, currentreplaceposition), code, a.slice(currentreplaceposition)].join('');
            currentreplaceelement.val(output);
            //  currentreplaceelement = '';
            //   currentreplaceposition = '';
        } else {
            tinymce.activeEditor.execCommand('mceInsertContent', false, code);
        }
    } else {
        tinymce.activeEditor.execCommand('mceInsertContent', false, code);
    }

});

1 个答案:

答案 0 :(得分:1)

您已经注意到,<>之间的所有内容都被视为tinymce中的html标签。 在将href本身中的字符串更改为使用&lt;&gt;的过程中,在将其插入编辑器之前,它也将转换为<>

不过,您可以直接将&lt;&gt;插入编辑器,并且可以根据需要运行。

添加此功能可将<>转换为&lt;&gt;

function convertCode(code) {
    return String(code).replace('<', '&lt;').replace('>', '&gt;');
}

,然后在将code插入tinymce中时调用它,如下所示:

tinymce.activeEditor.execCommand('mceInsertContent', false, convertCode(code));

以前对我有用,所以我确定它在这里也能使用。