当前位置: 首页 > 面试题库 >

TinyMCE粘贴为纯文本

朱建弼
2023-03-14
问题内容

这是Web上RTE的常见问题之一。您能否指导我完成以下步骤:

  1. 粘贴为纯文本
  2. 保留HTML,但删除WORD / HTML样式

我想直接在粘贴(paste_preprocess回调)上执行此操作,而无需打开粘贴插件提供的对话框。

有什么想法/经验吗?

谢谢,


问题答案:

这就是我要做的粘贴纯文本。

1. paste_preprocess设置(在tinymce init中)

paste_preprocess : function(pl, o) {
  //example: keep bold,italic,underline and paragraphs
  //o.content = strip_tags( o.content,'<b><u><i><p>' );

  // remove all tags => plain text
  o.content = strip_tags( o.content,'' );
},

2.函数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;
}


 类似资料:
  • 问题内容: 根据下面介绍的示例,我有一个基本的编辑器。有三种方法可以在区域内粘贴文本: + 右键单击->粘贴 右键单击->作为纯文本粘贴 我想只粘贴没有任何HTML标记的纯文本。如何强制前两个动作粘贴纯文本? 可能的解决方案: 我想到的方法是为(+ )的keyup事件设置侦听器,并在粘贴之前剥离HTML标记。 这是最好的解决方案吗? 避免粘贴任何HTML标记是否安全? 如何将侦听器添加到右键单击-

  • 我有一个问题与TinyMCE编辑器,我无法解决。 如果从Excel复制一个表并将其粘贴到编辑器中,则格式将丢失。我已经设置了extended_valid_elements如下... 我怎样才能使这个工作从excel而不必首先通过word?

  • 我有几个Excel图表,我想用Python导出为图像。每个图表都在一个单独的Excel文件中,只有一张工作表。此脚本适用于几乎所有我的图表: 我有一个图表,但是不能导出...我得到这个错误后导出函数: 图表被复制到临时工作表,但导出失败。在一些为导出此图表而编写的旧Excel-VBA代码中,我看到这一行: Python的等价物是什么?这: 不工作(属性错误:对象没有属性'Paste特殊') 编辑-

  • tinymce粘贴excle表格 tynimce粘贴excle表格的时候为什么设置了宽度但是展示得不对呀

  • 问题内容: 我的.emacs中有(cua-mode t),因此Cc是复制的,而Cv是粘贴的,就像桌面上的其他大多数程序(Ubuntu,Gnome,Linux)一样。但是,Emacs似乎并未与其他程序共享剪贴板/复制缓冲区。 例如,如果我在Firefox中使用Cc,则可以将SCv粘贴到终端中,或者将Cv粘贴到gedit中。但是,如果我在emacs中使用Cv(或Cy),则无法获得从Firefox复制的