【问题标题】:CTRL+V unformatted on TinymceCTRL+V 在 Tinymce 上未格式化
【发布时间】:2013-11-29 06:38:45
【问题描述】:

我正在尝试通过简单地使用 CTRL + CCTRL + V.

我很难做到这一点,因为 TinyMCE 不断尝试保持初始格式。我正在使用 Rails。

你知道有什么办法可以解决这个问题吗?

【问题讨论】:

  • 您的初始格式是什么?你的意思是行尾改变了吗?
  • 例如,我从 HTML 页面复制文本,然后将其复制到 TinyMCE;好吧,我需要 TinyMCE 不保留格式,只是在使用 CTRL+V 时自动粘贴为纯文本。现在它正试图将 HTML 格式保留在 TinyMCE 中
  • TinyMCE 是一个 text 编辑器(不是 WYSIWYG 编辑器)。您希望它显示 HTML 吗?
  • 如上所述,我不希望它显示HTML,我需要它在执行CTRL+V时自动删除html格式并使用纯文本
  • 没有魔法。一块一块地复制。

标签: tinymce tinymce-rails


【解决方案1】:

您可以配置 tinymce 以在粘贴时去除所有不需要的标签。

为此,请使用 tinymce 配置参数 paste_preprocess:

paste_preprocess : function(pl, o) {
    o.content = window.strip_tags( o.content,'<p><div><ul><ol><li><br>' );
},

使用strip_tags函数如下:

// Strips HTML and PHP tags from a string 
// returns 1: 'Kevin <b>van</b> <i>Zonneveld</i>'
// example 2: strip_tags('<p>Kevin <img src="someimage.png" onmouseover="someFunction()">van <i>Zonneveld</i></p>', '<p>');
// returns 2: '<p>Kevin van Zonneveld</p>'
// example 3: strip_tags("<a href='http://kevin.vanzonneveld.net'>Kevin van Zonneveld</a>", "<a>");
// returns 3: '<a href='http://kevin.vanzonneveld.net'>Kevin van Zonneveld</a>'
// example 4: strip_tags('1 < 5 5 > 1');
// returns 4: '1 < 5 5 > 1'
function strip_tags (str, allowed_tags)
{

    var key = '', allowed = false;
    var matches = [];    var allowed_array = [];
    var allowed_tag = '';
    var i = 0;
    var k = '';
    var html = ''; 
    var replacer = function (search, replace, str) {
        return str.split(search).join(replace);
    };
    // Build allowes tags associative array
    if (allowed_tags) {
        allowed_array = allowed_tags.match(/([a-zA-Z0-9]+)/gi);
    }
    str += '';

    // Match tags
    matches = str.match(/(<\/?[\S][^>]*>)/gi);
    // Go through all HTML tags
    for (key in matches) {
        if (isNaN(key)) {
                // IE7 Hack
            continue;
        }

        // Save HTML tag
        html = matches[key].toString();
        // Is tag not in allowed list? Remove from str!
        allowed = false;

        // Go through all allowed tags
        for (k in allowed_array) {            // Init
            allowed_tag = allowed_array[k];
            i = -1;

            if (i != 0) { i = html.toLowerCase().indexOf('<'+allowed_tag+'>');}
            if (i != 0) { i = html.toLowerCase().indexOf('<'+allowed_tag+' ');}
            if (i != 0) { i = html.toLowerCase().indexOf('</'+allowed_tag)   ;}

            // Determine
            if (i == 0) {                allowed = true;
                break;
            }
        }
        if (!allowed) {
            str = replacer(html, "", str); // Custom replace. No regexing
        }
    }
    return str;
}

您可能也想仔细看看这个 SO-Thread:TinyMCE Paste As Plain Text

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多