代码之家  ›  专栏  ›  技术社区  ›  Jamal Abdul Nasir

粘贴预处理tinymce问题

  •  2
  • Jamal Abdul Nasir  · 技术社区  · 14 年前

    我想剥离所有的html标签时,粘贴在tinymce编辑器。以下是不起作用的代码。。。以下是tinymce设置。。。粘贴预处理回调未触发。。。我是不是错过了一些选择。。?

    tinyMCESettings = [ {
            mode : "none,textareas",
            height:heightEditor,
            width:'100%',
            plugins: "paste",
            theme : "advanced", //skin : "wp_theme",
            theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter",
            relative_urls : "true",
            paste_use_dialog : false,
            paste_auto_cleanup_on_paste : false,
            content_css: styleSheetToLoadForTinyMCE + "?" + new Date().getTime(),
            force_p_newlines: false,
            setup: function (ed) {
                ed.onInit.add(
                    function (ed, evt) {
                        //resizeFrame1();
                        var a = tinyMCE.get(ed.id).getContent();
                        if(a.indexOf("hcRestrictedMode", 0) > 0){
                            ed.getDoc().designMode = "off";
                            setTimeout(function(){
                                tinyMCE.activeEditor.dom.setAttrib(tinyMCE.activeEditor.dom.select(".hcEditable"), 'contenteditable', 'true');
                            }, 1000);
                        }
                    });
            },
            paste_preprocess : function(pl, o) {
                // Content string containing the HTML from the clipboard
                alert(o.content);
                o.content = o.content.replace(/<.+?>/,"");
            },
            paste_postprocess : function(pl, o) {
               // Content DOM node containing the DOM structure of the clipboard
               alert(o.content)
               o.content = o.content.replace(/<.+?>/,"");
           }
        }];
    

    提前。。。

    2 回复  |  直到 14 年前
        1
  •  4
  •   Thariama    14 年前

    以下是配置代码:

    paste_preprocess : function(pl, o) {
      alert('pasteprocess startet');
      o.content = strip_tags(o.content,'');
      //o.content = strip_tags(o.content,'<b><u><i><p><br><img>'); // use this i.e. to keep some tags
      alert('pasteprocess ended - function strip_tags found and used');
    },
    

    下面是使用的函数(取自 here )

    function strip_tags (str, allowed_tags) {
        // Strips HTML and PHP tags from a string  
        // 
        // version: 1006.1915
        // discuss at: http://phpjs.org/functions/strip_tags    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
        // +   improved by: Luke Godfrey
        // +      input by: Pul
        // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
        // +   bugfixed by: Onno Marsman    // +      input by: Alex
        // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
        // +      input by: Marc Palau
        // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
        // +      input by: Brett Zamir (http://brett-zamir.me)    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
        // +   bugfixed by: Eric Nagel
        // +      input by: Bobby Drake
        // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
        // +   bugfixed by: Tomasz Wesolowski    // *     example 1: strip_tags('<p>Kevin</p> <b>van</b> <i>Zonneveld</i>', '<i><b>');
        // *     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'
        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;
    }
    

    设置 paste_auto_cleanup_on_paste 为真,它将工作(在我的系统中检查您的配置)

        2
  •  4
  •   Jamal Abdul Nasir    12 年前

    paste_preprocess : function(pl, o) {
                // Content string containing the HTML from the clipboard
                var str = o.content;
                var ta = document.createElement("textarea");
                ta.innerHTML = str.replace(/</g,"&lt;").replace(/>/g,"&gt;");
                o.content = CleanWordHTML(ta.value);
     },
     paste_postprocess : function(pl, o) {
    },
    

    CleanWordHTML(ta值);