5

我正在尝试用 '<' 替换 html 标签 '<' '>' 和'>' 在我的 TinyMCE 文本中进行页面回发之前。

使用 TinyMCE v.3.xi 可以这样做:

function saveCallback(element_id, html, body) {
    html = html.replace(/</gi, "&lt;");
    html = html.replace(/>/gi, "&gt;");
    return html;
}

function loadCallback(type, value) {
    if (type == "insert_to_editor") {
        value = value.replace(/&lt;/gi, "<");
        value = value.replace(/&gt;/gi, ">");
    }
    return value;
}

tinyMCE.init({
 ...
 save_callback: "saveCallback",
 cleanup_callback: "loadCallback" 
});

使用新的 TinyMCE v.4.x 我尝试过这种方式:

$(function () {
    tinymce.init({
        language: "it",
        width: 500,
        height: 400,
        formats: false,
        menubar: false,    
        mode: "exact",
        elements: "Testo",
        setup: function (editor) {
            editor.on('SaveContent', function (e) {                            
                html = editor.getContent();
                html = html.replace(/</gi, "&lt;");
                html = html.replace(/>/gi, "&gt;");
                editor.getElement().value = html;
            });
        }
    });
});

并以这种方式:

$(function () {
    tinymce.init({
        language: "it",
        width: 500,
        height: 400,
        formats: false,
        menubar: false,    
        mode: "exact",
        elements: "Testo",
        setup: function (editor) {
            editor.on('submit', function (e) {                            
                html = editor.getContent();
                html = html.replace(/</gi, "&lt;");
                html = html.replace(/>/gi, "&gt;");
                editor.getElement().value = html;
            });
        }
    });
});

但是回发值始终包含 html 标记,并且页面返回消息“检测到潜在危险的 Request.Form 值”

4

3 回答 3

4

在init中尝试以下选项

encoding : 'xml',
setup: function (editor) {editor.on('SaveContent', function (e) {e.content = e.content.replace(/&#39/g, '&apos');});}

仅供参考:改编自您上面的代码和参考:

http://blog.tentaclesoftware.com/archive/2012/05/21/asp-net-4-0-tinymce-and-ldquoa-potentially-dangerous-request.aspx

对我有用:),希望它有所帮助。

于 2013-07-11T21:26:14.663 回答
0

我以这种方式解决了:

tinymce.init({
    selector: "#MySelector",
    width: ...,
    height: ...,
    encoding: 'xml',                        
    setup: function (editor) { editor.on('SaveContent', function (e) { e.content = e.content.replace(/&#39/g, '&apos').replace(/&amp;/g, '&'); }); }
});
于 2013-07-24T15:08:42.790 回答
0

使用 tinyMCE 4 尝试这个干净的解决方案,使用PostProcess事件:

    tinymce.init({
    language: "it",
    width: 500,
    height: 400,
    formats: false,
    menubar: false,    
    mode: "exact",
    elements: "Testo",                
    init_instance_callback: function (editor) {
            editor.on('PostProcess', function (e) {
                e.content = e.content.replace(/</g, '&lt');
                e.content = e.content.replace(/>/g, '&gt');
            });
        },
});
于 2020-08-04T19:10:34.313 回答