Table of Contents
回复内容:
Home Backend Development PHP Tutorial javascript - wordpress 3.8.1 版本安装 ck编辑器插件 4.0 js错误 Uncaught TypeError: Cannot read property 'add' of undefined

javascript - wordpress 3.8.1 版本安装 ck编辑器插件 4.0 js错误 Uncaught TypeError: Cannot read property 'add' of undefined

Jun 06, 2016 pm 08:45 PM
ajax ckeditor javascript php wordpress

安装插件后 不能正常预览
问题代码区域

c.onSubmit.add(function() {}) 的错误

下面是 wp中的js代码 那位大什么帮忙 解读一番也好

run: function() {
            var b = this;
            this.checkPost(), this.schedule = a.schedule({
                time: 15e3,
                func: function() {
                    wp.autosave.local.save()
                },
                repeat: !0,
                protect: !0
            }), 
            a("form#post").on("submit.autosave-local",
             function() {
                var c = "undefined" != typeof tinymce && tinymce.get("content"),
                    d = a("#post_ID").val() || 0;
                c && !c.isHidden() ? c.onSubmit.add(function() {
                    wp.autosave.local.save({
                        post_title: a("#title").val() || "",
                        content: a("#content").val() || "",
                        excerpt: a("#excerpt").val() || ""
                    })
                }) : b.save({
                    post_title: a("#title").val() || "",
                    content: a("#content").val() || "",
                    excerpt: a("#excerpt").val() || ""
                }), wpCookies.set("wp-saving-post-" + d, "check")
            })
        },

Copy after login
Copy after login

在autosave.min.js文件中

错误提示 Uncaught TypeError: Cannot read property 'add' of undefined

没太看懂这个js 关键是 ckeditor.utils.js 和这个文件的关系 以及 如何调用,作用域是什么完全搞不清楚。

<br>function autosave_parse_response(a) {
    var b, c, d = wpAjax.parseAjaxResponse(a, "autosave");
    return d && d.responses && d.responses.length && (d.responses[0].supplemental && (c = d.responses[0].supplemental, jQuery.each(c, function(a, b) {
        a.match(/^replace-/) && jQuery("#" + a.replace("replace-", "")).val(b)
    })), d.errors || ((b = parseInt(d.responses[0].id, 10)) && autosave_update_slug(b), d.responses[0].data && jQuery(".autosave-message").text(d.responses[0].data))), d
}
function autosave_saved(a) {
    blockSave = !1, autosave_parse_response(a), autosave_enable_buttons()
}
function autosave_saved_new(a) {
    blockSave = !1;
    var b, c = autosave_parse_response(a);
    c && c.responses.length && !c.errors ? (b = parseInt(c.responses[0].id, 10), b && (notSaved = !1, jQuery("#auto_draft").val("0")), autosave_enable_buttons(), autosaveDelayPreview && (autosaveDelayPreview = !1, doPreview())) : autosave_enable_buttons()
}
function autosave_update_slug(a) {
    "undefined" != makeSlugeditClickable && jQuery.isFunction(makeSlugeditClickable) && !jQuery("#edit-slug-box > *").size() && jQuery.post(ajaxurl, {
        action: "sample-permalink",
        post_id: a,
        new_title: fullscreen && fullscreen.settings.visible ? jQuery("#wp-fullscreen-title").val() : jQuery("#title").val(),
        samplepermalinknonce: jQuery("#samplepermalinknonce").val()
    }, function(a) {
        if ("-1" !== a) {
            var b = jQuery("#edit-slug-box");
            b.html(a), b.hasClass("hidden") && b.fadeIn("fast", function() {
                b.removeClass("hidden")
            }), makeSlugeditClickable()
        }
    })
}
function autosave_loading() {
    jQuery(".autosave-message").html(autosaveL10n.savingText)
}
function autosave_enable_buttons() {
    jQuery(document).trigger("autosave-enable-buttons"), wp.heartbeat && wp.heartbeat.hasConnectionError() || setTimeout(function() {
        var a = jQuery("#submitpost");
        a.find(":button, :submit").removeAttr("disabled"), a.find(".spinner").hide()
    }, 500)
}
function autosave_disable_buttons() {
    jQuery(document).trigger("autosave-disable-buttons"), jQuery("#submitpost").find(":button, :submit").prop("disabled", !0), setTimeout(autosave_enable_buttons, 5e3)
}
function delayed_autosave() {
    setTimeout(function() {
        blockSave || autosave()
    }, 200)
}
var autosave, autosavePeriodical, fullscreen, doPreview, autosaveLast = "",
    autosaveDelayPreview = !1,
    notSaved = !0,
    blockSave = !1,
    autosaveLockRelease = !0;
jQuery(document).ready(function(a) {
    autosaveLast = a("#wp-content-wrap").hasClass("tmce-active") && "undefined" != typeof switchEditors ? wp.autosave.getCompareString({
        post_title: a("#title").val() || "",
        content: switchEditors.pre_wpautop(a("#content").val()) || "",
        excerpt: a("#excerpt").val() || ""
    }) : wp.autosave.getCompareString(), autosavePeriodical = a.schedule({
        time: 1e3 * autosaveL10n.autosaveInterval,
        func: function() {
            autosave()
        },
        repeat: !0,
        protect: !0
    }), a("#post").submit(function() {
        a.cancel(autosavePeriodical), autosaveLockRelease = !1
    }), a('input[type="submit"], a.submitdelete', "#submitpost").click(function() {
        blockSave = !0, window.onbeforeunload = null, a(":button, :submit", "#submitpost").each(function() {
            var b = a(this);
            b.hasClass("button-primary") ? b.addClass("button-primary-disabled") : b.addClass("button-disabled")
        }), "publish" == a(this).attr("id") ? a("#major-publishing-actions .spinner").show() : a("#minor-publishing .spinner").show()
    }), window.onbeforeunload = function() {
        var b, c = "undefined" != typeof tinymce ? tinymce.activeEditor : !1;
        if (c && !c.isHidden()) {
            if (c.isDirty()) return autosaveL10n.saveAlert
        } else if (b = fullscreen && fullscreen.settings.visible ? wp.autosave.getCompareString({
            post_title: a("#wp-fullscreen-title").val() || "",
            content: a("#wp_mce_fullscreen").val() || "",
            excerpt: a("#excerpt").val() || ""
        }) : wp.autosave.getCompareString(), b != autosaveLast) return autosaveL10n.saveAlert
    }, a(window).unload(function(b) {
        autosaveLockRelease && (b.target && "#document" != b.target.nodeName || a.ajax({
            type: "POST",
            url: ajaxurl,
            async: !1,
            data: {
                action: "wp-remove-post-lock",
                _wpnonce: a("#_wpnonce").val(),
                post_ID: a("#post_ID").val(),
                active_post_lock: a("#active_post_lock").val()
            }
        }))
    }), a("#post-preview").click(function() {
        return "1" == a("#auto_draft").val() && notSaved ? (autosaveDelayPreview = !0, autosave(), !1) : (doPreview(), !1)
    }), doPreview = function() {
        a("input#wp-preview").val("dopreview"), a("form#post").attr("target", "wp-preview").submit().attr("target", "");
        var b = navigator.userAgent.toLowerCase(); - 1 != b.indexOf("safari") && -1 == b.indexOf("chrome") && a("form#post").attr("action", function(a, b) {
            return b + "?t=" + (new Date).getTime()
        }), a("input#wp-preview").val("")
    }, a("#title").on("keydown.editor-focus", function(b) {
        var c;
        9 == b.which && (b.ctrlKey || b.altKey || b.shiftKey || ("undefined" != typeof tinymce && (c = tinymce.get("content")), c && !c.isHidden() ? a(this).one("keyup", function() {
            a("#content_tbl td.mceToolbar > a").focus()
        }) : a("#content").focus(), b.preventDefault()))
    }), "1" == a("#auto_draft").val() && a("#title").blur(function() {
        this.value && "1" == a("#auto_draft").val() && delayed_autosave()
    }), a(document).on("heartbeat-connection-lost.autosave", function(b, c, d) {
        if ("timeout" === c || 503 == d) {
            var e = a("#lost-connection-notice");
            wp.autosave.local.hasStorage || e.find(".hide-if-no-sessionstorage").hide(), e.show(), autosave_disable_buttons()
        }
    }).on("heartbeat-connection-restored.autosave", function() {
        a("#lost-connection-notice").hide(), autosave_enable_buttons()
    })
}), autosave = function() {
    var a, b, c = wp.autosave.getPostData();
    return blockSave = !0, c.autosave ? "block" == jQuery("#TB_window").css("display") ? !1 : (a = wp.autosave.getCompareString(c), a == autosaveLast ? !1 : (autosaveLast = a, jQuery(document).triggerHandler("wpcountwords", [c.content]), autosave_disable_buttons(), b = "1" == c.auto_draft ? autosave_saved_new : autosave_saved, jQuery.ajax({
        data: c,
        beforeSend: autosave_loading,
        type: "POST",
        url: ajaxurl,
        success: b
    }), !0)) : !1
}, window.wp = window.wp || {}, wp.autosave = wp.autosave || {}, function(a) {
    wp.autosave.getPostData = function() {
        var b, c, d = "undefined" != typeof tinymce ? tinymce.activeEditor : null,
            e = [],
            f = {
                action: "autosave",
                autosave: !0,
                post_id: a("#post_ID").val() || 0,
                autosavenonce: a("#autosavenonce").val() || "",
                post_type: a("#post_type").val() || "",
                post_author: a("#post_author").val() || "",
                excerpt: a("#excerpt").val() || ""
            };
        if (d && !d.isHidden()) {
            if (d.plugins.spellchecker && d.plugins.spellchecker.active) return f.autosave = !1, f;
            "mce_fullscreen" == d.id && tinymce.get("content").setContent(d.getContent({
                format: "raw"
            }), {
                format: "raw"
            }), tinymce.triggerSave()
        }
        return "undefined" != typeof fullscreen && fullscreen.settings.visible ? (f.post_title = a("#wp-fullscreen-title").val() || "", f.content = a("#wp_mce_fullscreen").val() || "") : (f.post_title = a("#title").val() || "", f.content = a("#content").val() || ""), a('input[id^="in-category-"]:checked').each(function() {
            e.push(this.value)
        }), f.catslist = e.join(","), (b = a("#post_name").val()) && (f.post_name = b), (c = a("#parent_id").val()) && (f.parent_id = c), a("#comment_status").prop("checked") && (f.comment_status = "open"), a("#ping_status").prop("checked") && (f.ping_status = "open"), "1" == a("#auto_draft").val() && (f.auto_draft = "1"), f
    }, wp.autosave.getCompareString = function(b) {
        return "object" == typeof b ? (b.post_title || "") + "::" + (b.content || "") + "::" + (b.excerpt || "") : (a("#title").val() || "") + "::" + (a("#content").val() || "") + "::" + (a("#excerpt").val() || "")
    }, wp.autosave.local = {
        lastSavedData: "",
        blog_id: 0,
        hasStorage: !1,
        checkStorage: function() {
            var a = Math.random(),
                b = !1;
            try {
                sessionStorage.setItem("wp-test", a), b = sessionStorage.getItem("wp-test") == a, sessionStorage.removeItem("wp-test")
            } catch (c) {}
            return this.hasStorage = b, b
        },
        getStorage: function() {
            var a = !1;
            return this.hasStorage && this.blog_id && (a = sessionStorage.getItem("wp-autosave-" + this.blog_id), a = a ? JSON.parse(a) : {}), a
        },
        setStorage: function(a) {
            var b;
            return this.hasStorage && this.blog_id ? (b = "wp-autosave-" + this.blog_id, sessionStorage.setItem(b, JSON.stringify(a)), null !== sessionStorage.getItem(b)) : !1
        },
        getData: function() {
            var b = this.getStorage(),
                c = a("#post_ID").val();
            return b && c ? b["post_" + c] || !1 : !1
        },
        setData: function(b) {
            var c = this.getStorage(),
                d = a("#post_ID").val();
            if (!c || !d) return !1;
            if (b) c["post_" + d] = b;
            else {
                if (!c.hasOwnProperty("post_" + d)) return !1;
                delete c["post_" + d]
            }
            return this.setStorage(c)
        },
        save: function(b) {
            var c, d, e = !1;
            return b ? (c = this.getData() || {}, a.extend(c, b), c.autosave = !0) : c = wp.autosave.getPostData(), c.autosave ? (d = wp.autosave.getCompareString(c), d == this.lastSavedData ? !1 : (c.save_time = (new Date).getTime(), c.status = a("#post_status").val() || "", e = this.setData(c), e && (this.lastSavedData = d), e)) : !1
        },
        init: function(b) {
            var c = this;
            this.checkStorage() && (a("#content").length || a("#excerpt").length) && (b && a.extend(this, b), this.blog_id || (this.blog_id = "undefined" != typeof window.autosaveL10n ? window.autosaveL10n.blog_id : 0), a(document).ready(function() {
                c.run()
            }))
        },
        run: function() {
            var b = this;
            this.checkPost(), this.schedule = a.schedule({
                time: 15e3,
                func: function() {
                    wp.autosave.local.save()
                },
                repeat: !0,
                protect: !0
            }), 
            a("form#post").on("submit.autosave-local",
             function() {
                var c = "undefined" != typeof tinymce && tinymce.get("content"),
                    d = a("#post_ID").val() || 0;
                c && !c.isHidden() ? c.onSubmit.add(function() {
                    wp.autosave.local.save({
                        post_title: a("#title").val() || "",
                        content: a("#content").val() || "",
                        excerpt: a("#excerpt").val() || ""
                    })
                }) : b.save({
                    post_title: a("#title").val() || "",
                    content: a("#content").val() || "",
                    excerpt: a("#excerpt").val() || ""
                }), wpCookies.set("wp-saving-post-" + d, "check")
            })
        },
        compare: function(a, b) {
            function c(a) {
                return a.toString().replace(/[\x20\t\r\n\f]+/g, "")
            }
            return c(a || "") == c(b || "")
        },
        checkPost: function() {
            var b, c, d, e, f = this,
                g = this.getData(),
                h = a("#post_ID").val() || 0,
                i = wpCookies.get("wp-saving-post-" + h);
            if (g) return i && (wpCookies.remove("wp-saving-post-" + h), "saved" == i) ? (this.setData(!1), void 0) : (a("#has-newer-autosave").length || (b = a("#content").val() || "", c = a("#title").val() || "", d = a("#excerpt").val() || "", a("#wp-content-wrap").hasClass("tmce-active") && "undefined" != typeof switchEditors && (b = switchEditors.pre_wpautop(b)), "check" != i && this.compare(b, g.content) && this.compare(c, g.post_title) && this.compare(d, g.excerpt) || (this.restore_post_data = g, this.undo_post_data = {
                content: b,
                post_title: c,
                excerpt: d
            }, e = a("#local-storage-notice"), a(".wrap h2").first().after(e.addClass("updated").show()), e.on("click", function(b) {
                var c = a(b.target);
                c.hasClass("restore-backup") ? (f.restorePost(f.restore_post_data), c.parent().hide(), a(this).find("p.undo-restore").show()) : c.hasClass("undo-restore-backup") && (f.restorePost(f.undo_post_data), c.parent().hide(), a(this).find("p.local-restore").show()), b.preventDefault()
            }))), void 0)
        },
        restorePost: function(b) {
            var c;
            return b ? (this.lastSavedData = wp.autosave.getCompareString(b), a("#title").val() != b.post_title && a("#title").focus().val(b.post_title || ""), a("#excerpt").val(b.excerpt || ""), c = "undefined" != typeof tinymce && tinymce.get("content"), c && !c.isHidden() && "undefined" != typeof switchEditors ? (c.undoManager.add(), c.setContent(b.content ? switchEditors.wpautop(b.content) : "")) : (a("#content-html").click(), a("#content").val(b.content)), !0) : !1
        }
    }, wp.autosave.local.init()
}(jQuery);
Copy after login
Copy after login

ckeditor 中的js

<br><br>var editorCKE;
jQuery(document).ready(function () {
    ckeditorSettings.configuration['on'] = {
        configLoaded : function ( evt ) {
            if (typeof(ckeditorSettings.externalPlugins) != 'undefined') {
                var externals=new Array();
                for (var x in ckeditorSettings.externalPlugins) {
                    CKEDITOR.plugins.addExternal(x, ckeditorSettings.externalPlugins[x]);
                    externals.push(x);
                }
            }
            evt.editor.config.extraPlugins += (evt.editor.config.extraPlugins ? ','+externals.join(',') : externals.join(','));
            if (evt.editor.config[evt.editor.config.toolbar +'_removeButtons']);
                evt.editor.config.removeButtons = evt.editor.config[evt.editor.config.toolbar +'_removeButtons'];
            CKEDITOR.addCss(evt.editor.config.extraCss);
        }
    };
    CKEDITOR.on( 'instanceReady', function( ev )
    {
        var dtd = CKEDITOR.dtd;
        for ( var e in CKEDITOR.tools.extend( {}, dtd.$nonBodyContent, dtd.$block, dtd.$listItem, dtd.$tableContent ) )
        {
            ev.editor.dataProcessor.writer.setRules( e, ckeditorSettings.outputFormat);
        }
        ev.editor.dataProcessor.writer.setRules( 'br',
        {
            breakAfterOpen : true
        });
        ev.editor.dataProcessor.writer.setRules( 'pre',
        {
            indent: false
        });
        editorCKE = CKEDITOR.instances['content'];
    });

    if (ckeditorSettings.textarea_id != 'comment'){
        edInsertContentOld = function () {
            return ;
        };
        if(typeof(window.edInsertContent) != 'undefined'){
            edInsertContentOld = window.edInsertContent;
        }
        window.edInsertContent = function (myField, myValue) {
            if(typeof(CKEDITOR) != 'undefined' && typeof(editorCKE) != 'undefined'){
                editorCKE.insertHtml(myValue);
            } else {
                edInsertContentOld(myField, myValue);
            }
        };
        var autosaveOld = function () {
            return ;
        };
        if(typeof(window.autosave) != 'undefined'){
            autosaveOld = window.autosave;
        }

        if(typeof(window.switchEditors) != 'undefined') {
            window.switchEditors.go = function(id, mode) {
                if ('tinymce' == mode || 'tmce' == mode) {
                    jQuery('#'+id).closest('.html-active').removeClass('html-active').addClass('tmce-active');
                    ckeditorOn(id);
                } else {
                    jQuery('#'+id).closest('.tmce-active').removeClass('tmce-active').addClass('html-active');
                    ckeditorOff(id);
                    jQuery('.js .theEditor').attr('style', 'color: black;');
                }
            };
        }
    }
    //if qTranslate plugin enabled
    if ( ckeditorSettings.qtransEnabled ){
        //custom version of switchEditors function when qTranslate plugin is enabled
        if(typeof(window.switchEditors) != 'undefined') {
            window.switchEditors.go = function(id, lang) {

                id = id || 'content';
                lang = lang || 'toggle';

                if ( 'toggle' == lang ) {
                    if ( ed && !ed.isHidden() )
                        lang = 'html';
                    else
                        lang = 'tmce';
                } else if( 'tinymce' == lang )
                    lang = 'tmce';

                var inst = tinyMCE.get('qtrans_textarea_' + id);
                var vta = document.getElementById('qtrans_textarea_' + id);
                var ta = document.getElementById(id);
                var wrap_id = 'wp-'+id+'-wrap';

                // update merged content
                if(inst && ! inst.isHidden()) {
                    tinyMCE.triggerSave();
                } else {
                    qtrans_save(vta.value);
                }
                // check if language is already active
                if(lang!='tmce' && lang!='html' && document.getElementById('qtrans_select_'+lang).className=='wp-switch-editor switch-tmce switch-html') {
                    return;
                }

                if(lang!='tmce' && lang!='html') {
                    document.getElementById('qtrans_select_'+qtrans_get_active_language()).className='wp-switch-editor';
                    document.getElementById('qtrans_select_'+lang).className='wp-switch-editor switch-tmce switch-html';
                }
                if(lang=='html') {
                    if ( inst && inst.isHidden() )
                        return false;
                    if ( inst ) {
                        vta.style.height = inst.getContentAreaContainer().offsetHeight + 20 + 'px';
                        inst.hide();
                    }
                    jQuery("#"+wrap_id).removeClass('tmce-active');
                    jQuery("#"+wrap_id).addClass('html-active');
                    setUserSetting( 'editor', 'html' );
                } else if(lang=='tmce') {
                    if(inst && ! inst.isHidden())
                        return false;
                    if ( tinyMCEPreInit.mceInit[id] && tinyMCEPreInit.mceInit[id].wpautop )
                        vta.value = this.wpautop(qtrans_use(qtrans_get_active_language(),ta.value));
                    if (inst) {
                        inst.show();
                    } else {
                        qtrans_hook_on_tinyMCE(id);
                    }
                    jQuery("#"+wrap_id).removeClass('html-active');
                    jQuery("#"+wrap_id).addClass('tmce-active');
                    setUserSetting('editor', 'tinymce');
                } else {
                    // switch content
                    qtrans_assign('qtrans_textarea_'+id,qtrans_use(lang,ta.value));
                }
            }
        }
        jQuery('#edButtonHTML').addClass('active');
        jQuery('#edButtonPreview').removeClass('active');
        if(ckeditorSettings.textarea_id != 'comment'){

            ckeditorSettings.textarea_id = 'qtrans_textarea_content';
            ckeditorSettings.configuration['on'].getData = function (evt) {
                evt.data.dataValue = evt.data.dataValue.replace(/(^<\/p>)|(<p>$)/g, '');
                evt.data.dataValue = evt.data.dataValue.replace(/^<p>(\s|\n|\r)*<p>/g, '<p>');
                evt.data.dataValue = evt.data.dataValue.replace(/<\/p>(\s|\n|\r)*<\/p>(\s|\n|\r)*$/g, '<\/p>');
                qtrans_save(evt.data.dataValue);
            };
            if ( jQuery('#'+ckeditorSettings.textarea_id).length && typeof CKEDITOR.instances[ckeditorSettings.textarea_id] == 'undefined' ) {
                CKEDITOR.replace(ckeditorSettings.textarea_id, ckeditorSettings.configuration);
                editorCKE = CKEDITOR.instances[ckeditorSettings.textarea_id];
                //add afterCommandExec exect to last created CKEditor instance
                editorCKE.on( 'afterCommandExec', function(ev) {
                    afterCommandEvent(ev);
                });
            }

            window.tinyMCE = tinymce =  getTinyMCEObject();
        }
    }else {
        if(ckeditorSettings.autostart && (typeof getUserSetting == 'undefined' || getUserSetting('editor') === '' || getUserSetting('editor') == 'tinymce')){
            ckeditorOn();
        }
    }
    jQuery("#update-gallery").click(function(){
        updateCkeGallery();
    });

    if (ckeditorSettings.excerpt_state && jQuery("textarea#excerpt").length > 0 && jQuery("#postexcerpt-hide").attr('checked') == 'checked') {
        //ckeditorOn('excerpt');
        CKEDITOR.replace('excerpt', ckeditorSettings.configuration);
    }
    if (typeof window.tinyMCE != 'undefined') {
        if (typeof QTags != 'undefined') {
            jQuery(".row-actions span.reply a").live('click', function(){
                if (typeof CKEDITOR.instances['replycontent'] != 'undefined') {
                    ckeditorOff('replycontent');
                }
                CKEDITOR.replace('replycontent', {'basicEntities' : false, 'entities': false,'toolbar_Comments' : [{ name: 'basicstyles', items : [ 'Bold','Italic','Underline'] }, { name: 'links', items : [ 'Link','Unlink' ] },{ name: 'paragraph', items : [ 'NumberedList','BulletedList'] }, { name: 'insert', items : [ 'Image' ] } ],  'toolbar' : 'Comments'});
            });
            jQuery("#replyrow a.save").unbind('click').live('click', function(){
                var data = null;
                if (typeof CKEDITOR.instances['replycontent'] != 'undefined') {
                    data = CKEDITOR.instances['replycontent'].getData();
                }
                if (data != null && data.length > 0 ) {
                    jQuery('textarea#replycontent').html(data);
                    ckeditorOff('replycontent');
                }
                commentReply.send();
                return;
            });
            jQuery("#replyrow a.cancel").unbind('click').live('click', function(){
                commentReply.revert()
                ckeditorOff('replycontent');
                return;
            });
            QTags.getInstance = function (editor_id) {
                return window.tinyMCE;
            }
        }
    }
});
function ckeditorOn(id) {
    var instance;
    if (typeof(id) != 'undefined' && typeof(CKEDITOR.instances[id]) == 'undefined' )
    {
        setUserSetting( 'editor', 'tinymce' );
        jQuery('#quicktags').hide();
        jQuery('#edButtonPreview').addClass('active');
        jQuery('#edButtonHTML').removeClass('active');
        instance = CKEDITOR.replace(id, ckeditorSettings.configuration);
    }
    if ( jQuery('textarea#'+ckeditorSettings.textarea_id).length && (typeof(CKEDITOR.instances) == 'undefined' || typeof(CKEDITOR.instances[ckeditorSettings.textarea_id]) == 'undefined' ) && jQuery("#"+ckeditorSettings.textarea_id).parent().parent().attr('id') != 'quick-press') {
        instance =  CKEDITOR.replace(ckeditorSettings.textarea_id, ckeditorSettings.configuration);
        if(ckeditorSettings.textarea_id == 'content') {
            setUserSetting( 'editor', 'tinymce' );
            jQuery('#quicktags').hide();
            jQuery('#edButtonPreview').addClass('active');
            jQuery('#edButtonHTML').removeClass('active');
        }
        else if(ckeditorSettings.textarea_id == 'comment') {
            var labelObj = jQuery('#'+ckeditorSettings.textarea_id).prev('label');
            if (labelObj){
                labelObj.hide();
            }
        }
    }
    if (typeof(instance) != 'undefined') {
        //add afterCommandExec exect to last created CKEditor instance
        instance.on( 'afterCommandExec', function(ev) {
            afterCommandEvent(ev);
        });
    }
}

function ckeditorOff(id) {
    if (typeof(id) != 'undefined')
    {
        editorCKE = CKEDITOR.instances[id];
    }else
    {
        editorCKE = CKEDITOR.instances[ckeditorSettings.textarea_id];
    }
    if(typeof(editorCKE) != 'undefined'){
        editorCKE.destroy();
        if(ckeditorSettings.textarea_id == 'content') {
            setUserSetting( 'editor', 'html' );
            jQuery('#quicktags').show();
            jQuery('#edButtonHTML').addClass('active');
            jQuery('#edButtonPreview').removeClass('active');
        }
    }
}

if ( !ckeditorSettings.qtransEnabled ){
    var tinymce = window.tinyMCE = getTinyMCEObject();
}
function getTinyMCEObject()
{
    var tinymce = window.tinyMCE = (function () {
        var tinyMCE = {
            isOpera : function() {
                return CKEDITOR.env.opera;
            },
            onAddEditor : { add : function() {
                // this function did nothing else apart from resizing TinyMCE
            } },
            get : function (id) {
                var instant = {
                    isHidden : function (){
                        editor = CKEDITOR.instances[id];
                        if (typeof editorCKE == 'undefined') editorCKE = editor;
                        if(typeof(editor) != 'undefined')
                        {
                                return false;
                        }else{
                                return true;
                        }
                    },
                    isDirty : function (){
                        return false;
                    },
                    execCommand : function (command, integer, val) {
                        if(command == 'mceSetContent') {
                            editorCKE.setData(val);
                        }
                        if (command == 'mceInsertContent')
                        {
                            editorCKE.insertHtml(val);
                        }
                    },
                    onSaveContent : {
                        add : function (func) {
                            window.tinymceosc = func;
                        }
                    },
                    getContentAreaContainer : function () {
                        return {
                            offsetHeight : editorCKE.config.height
                        };
                    },
                    hide : function () {
                        ckeditorOff(id);
                    },
                    show : function () {
                        ckeditorOn(id);
                    },
                    save : function(){
                        return;
                    },
                    focus : function(){
                        return;
                    },
                    plugins: {}
                };

                return instant;
            },
            execCommand : function (command, integer, val) {
                if(command == 'mceAddControl'){
                    ckeditorSettings.textarea_id = val;
                    if(ckeditorSettings.autostart) {
                        ckeditorOn();
                    } else {
                        document.getElementById('qtrans_textarea_content').removeAttribute('style');
                    }
                }
            },
            triggerSave : function(param) {
                if(typeof(CKEDITOR) != 'undefined' && typeof(editorCKE) != 'undefined')
                    editorCKE.updateElement();
            },
            activeEditor : {
                isHidden : function (){
                    return false;
                },
                isDirty : function (){
                    return false;
                },
                focus : function (){
                    return;
                },
                plugins : {},
                execCommand : function(command, state, text)
                {
                    if (command == "mceInsertContent")
                    {
                        //test if image has caption and make necessary text format
                        pattern = /\[caption(.*)\]<.*>(.*)\[\/caption\]/i;
                        if (pattern.test(text)) {
                            replace_match = pattern.exec(text);
                            text = text.replace(/<img  (.*) \/ alt="javascript - wordpress 3.8.1 版本安装 ck编辑器插件 4.0 js错误  Uncaught TypeError: Cannot read property &#039;add&#039; of undefined" >/g, function( match, cont )
                            {
                                cont = cont.replace(/class="(.*)"/g, function( match, cont ){
                                    tmp = 'class="' + cont + ' wp-caption"';
                                    return tmp;
                                });
                                tmp = '<img  ' + cont + ' data-cke-caption=\'' + replace_match[1] + '\' data-cke-caption-text=\'' + replace_match[2] + '\' / alt="javascript - wordpress 3.8.1 版本安装 ck编辑器插件 4.0 js错误  Uncaught TypeError: Cannot read property &#039;add&#039; of undefined" >' ;
                                return tmp;
                            });
                        }
                        //setTimeout is required in IE8 when inserting Image gallery from an external modal dialog
                        if (typeof editorCKE == 'undefined') editorCKE = CKEDITOR.instances[ckeditorSettings.textarea_id];
                        setTimeout(function(){
                            editorCKE.insertHtml(text);
                        }, 0);
                    }
                },
                selection : {
                    getBookmark : function(name) {
                        return '';
                    }
                },
                windowManager : {
                    bookmark: {}
                }
            },
            EditorManager :{
                activeEditor: {
                    selection : {
                        getNode : function(){
                            var obj = jQuery(editorCKE.document.getBody().getHtml());
                            var index = 0;
                            jQuery.each(obj,function(i, val){
                                var images = jQuery("img",jQuery(val));
                                jQuery.each(images, function(key, value){
                                    if (jQuery(value).hasClass('wpGallery, cke_wpgallery'))
                                    {
                                        index = i;
                                        return;
                                    }
                                });
                            });
                            if (obj.length === 0)
                            {
                                obj = document.createElement("p");
                                return obj;
                            }
                            return obj[index];
                        },
                        getBookmark : function(name) {
                            return ;
                        }
                    },
                    dom :{
                        select : function(selector) {

                            //get CKEditor content
                            var obj = editorCKE.document.getBody().getHtml();
                            images =  editorCKE.document.getElementsByTag('img');
                            if ( typeof images.$ == 'undefined' || images.$.length == 0) return [];
                            for (var i in images.$)
                            {
                                if ( typeof images.$[i] != 'undefined' && ((CKEDITOR.env.ie && images.$[i].className == 'wpGallery, cke_wpgallery') || images.$[i].classList == 'wpGallery, cke_wpgallery'))
                                {
                                    var element = new CKEDITOR.dom.element(images.$[i]);
                                    index = i;
                                    break;
                                }
                            }
                            var results =[];

                            if (typeof element != 'undefined')
                            {
                                results[0] = images.$[index];
                                return  results;

                            }else
                            {
                                return [];
                            }
                        },
                            getAttrib : function(el, selector)
                            {
                                    return jQuery(el).attr(selector);
                            },
                            //function to set new gallery attributes
                            setAttrib : function(el, selector, value)
                            {
                                //get CKEditor content
                                var obj = editorCKE.document.getBody().getHtml();
                                images =  editorCKE.document.getElementsByTag('img');
                                for (var i in images.$)
                                {
                                    if ( typeof images.$[i] != 'undefined' && ((CKEDITOR.env.ie && images.$[i].className == 'wpGallery, cke_wpgallery') || images.$[i].classList == 'wpGallery, cke_wpgallery'))
                                    {
                                        var element = new CKEDITOR.dom.element(images.$[i]);
                                        element.setAttribute('title', value);
                                        element.setAttribute('data-gallery', '['+value+']');
                                    }
                                }
                            },
                            decode : function(text) {
                                return text;
                            },
                            hasClass : function(element, name)
                            {
                                var hasClass = jQuery(element).attr('class');
                                var pattern = /wpGallery/;
                                return pattern.test(hasClass);
                            }
                    }
            },
            get : function(id) {return;}
            },
            DOM :{
                removeClass : function(id, className) {return;},
                addClass : function(id, className) {return;}
            },
            addI18n : function(language, param){
                return ;
            }
        };
    return tinyMCE;
})();
    return tinymce;
}
var tinyMCEPreInit =  {
    mceInit : function(){
        language : 'en';
    }
};

var tinyMCEPopup = {
    onInit : {
        add : function() {return ;}
    },
    editor : {
        windowManager : {
            createInstance : function(id) {return; }
        }
    }
};
/*
 * Function to move cursor after fake gallery image. Turn on frame show
 */
function updateCkeGallery()
{
    jQuery("#add_image").unbind('click');
    jQuery("#add_image").bind('click',function(){
        return true;
    });
}
function afterCommandEvent(ev)
{
    if (ev.data.name != 'maximize') { return; }
        //if maximize button was clicked hide/show WP admin bar - prevention of hiding buttton under WP admin bar
        if (ev.data.command.state == CKEDITOR.TRISTATE_ON) { jQuery("#wpadminbar").hide() } else { jQuery("#wpadminbar").show() }
}

Copy after login

回复内容:

安装插件后 不能正常预览
问题代码区域

c.onSubmit.add(function() {}) 的错误

下面是 wp中的js代码 那位大什么帮忙 解读一番也好

run: function() {
            var b = this;
            this.checkPost(), this.schedule = a.schedule({
                time: 15e3,
                func: function() {
                    wp.autosave.local.save()
                },
                repeat: !0,
                protect: !0
            }), 
            a("form#post").on("submit.autosave-local",
             function() {
                var c = "undefined" != typeof tinymce && tinymce.get("content"),
                    d = a("#post_ID").val() || 0;
                c && !c.isHidden() ? c.onSubmit.add(function() {
                    wp.autosave.local.save({
                        post_title: a("#title").val() || "",
                        content: a("#content").val() || "",
                        excerpt: a("#excerpt").val() || ""
                    })
                }) : b.save({
                    post_title: a("#title").val() || "",
                    content: a("#content").val() || "",
                    excerpt: a("#excerpt").val() || ""
                }), wpCookies.set("wp-saving-post-" + d, "check")
            })
        },

Copy after login
Copy after login

在autosave.min.js文件中

错误提示 Uncaught TypeError: Cannot read property 'add' of undefined

没太看懂这个js 关键是 ckeditor.utils.js 和这个文件的关系 以及 如何调用,作用域是什么完全搞不清楚。

<br>function autosave_parse_response(a) {
    var b, c, d = wpAjax.parseAjaxResponse(a, "autosave");
    return d && d.responses && d.responses.length && (d.responses[0].supplemental && (c = d.responses[0].supplemental, jQuery.each(c, function(a, b) {
        a.match(/^replace-/) && jQuery("#" + a.replace("replace-", "")).val(b)
    })), d.errors || ((b = parseInt(d.responses[0].id, 10)) && autosave_update_slug(b), d.responses[0].data && jQuery(".autosave-message").text(d.responses[0].data))), d
}
function autosave_saved(a) {
    blockSave = !1, autosave_parse_response(a), autosave_enable_buttons()
}
function autosave_saved_new(a) {
    blockSave = !1;
    var b, c = autosave_parse_response(a);
    c && c.responses.length && !c.errors ? (b = parseInt(c.responses[0].id, 10), b && (notSaved = !1, jQuery("#auto_draft").val("0")), autosave_enable_buttons(), autosaveDelayPreview && (autosaveDelayPreview = !1, doPreview())) : autosave_enable_buttons()
}
function autosave_update_slug(a) {
    "undefined" != makeSlugeditClickable && jQuery.isFunction(makeSlugeditClickable) && !jQuery("#edit-slug-box > *").size() && jQuery.post(ajaxurl, {
        action: "sample-permalink",
        post_id: a,
        new_title: fullscreen && fullscreen.settings.visible ? jQuery("#wp-fullscreen-title").val() : jQuery("#title").val(),
        samplepermalinknonce: jQuery("#samplepermalinknonce").val()
    }, function(a) {
        if ("-1" !== a) {
            var b = jQuery("#edit-slug-box");
            b.html(a), b.hasClass("hidden") && b.fadeIn("fast", function() {
                b.removeClass("hidden")
            }), makeSlugeditClickable()
        }
    })
}
function autosave_loading() {
    jQuery(".autosave-message").html(autosaveL10n.savingText)
}
function autosave_enable_buttons() {
    jQuery(document).trigger("autosave-enable-buttons"), wp.heartbeat && wp.heartbeat.hasConnectionError() || setTimeout(function() {
        var a = jQuery("#submitpost");
        a.find(":button, :submit").removeAttr("disabled"), a.find(".spinner").hide()
    }, 500)
}
function autosave_disable_buttons() {
    jQuery(document).trigger("autosave-disable-buttons"), jQuery("#submitpost").find(":button, :submit").prop("disabled", !0), setTimeout(autosave_enable_buttons, 5e3)
}
function delayed_autosave() {
    setTimeout(function() {
        blockSave || autosave()
    }, 200)
}
var autosave, autosavePeriodical, fullscreen, doPreview, autosaveLast = "",
    autosaveDelayPreview = !1,
    notSaved = !0,
    blockSave = !1,
    autosaveLockRelease = !0;
jQuery(document).ready(function(a) {
    autosaveLast = a("#wp-content-wrap").hasClass("tmce-active") && "undefined" != typeof switchEditors ? wp.autosave.getCompareString({
        post_title: a("#title").val() || "",
        content: switchEditors.pre_wpautop(a("#content").val()) || "",
        excerpt: a("#excerpt").val() || ""
    }) : wp.autosave.getCompareString(), autosavePeriodical = a.schedule({
        time: 1e3 * autosaveL10n.autosaveInterval,
        func: function() {
            autosave()
        },
        repeat: !0,
        protect: !0
    }), a("#post").submit(function() {
        a.cancel(autosavePeriodical), autosaveLockRelease = !1
    }), a('input[type="submit"], a.submitdelete', "#submitpost").click(function() {
        blockSave = !0, window.onbeforeunload = null, a(":button, :submit", "#submitpost").each(function() {
            var b = a(this);
            b.hasClass("button-primary") ? b.addClass("button-primary-disabled") : b.addClass("button-disabled")
        }), "publish" == a(this).attr("id") ? a("#major-publishing-actions .spinner").show() : a("#minor-publishing .spinner").show()
    }), window.onbeforeunload = function() {
        var b, c = "undefined" != typeof tinymce ? tinymce.activeEditor : !1;
        if (c && !c.isHidden()) {
            if (c.isDirty()) return autosaveL10n.saveAlert
        } else if (b = fullscreen && fullscreen.settings.visible ? wp.autosave.getCompareString({
            post_title: a("#wp-fullscreen-title").val() || "",
            content: a("#wp_mce_fullscreen").val() || "",
            excerpt: a("#excerpt").val() || ""
        }) : wp.autosave.getCompareString(), b != autosaveLast) return autosaveL10n.saveAlert
    }, a(window).unload(function(b) {
        autosaveLockRelease && (b.target && "#document" != b.target.nodeName || a.ajax({
            type: "POST",
            url: ajaxurl,
            async: !1,
            data: {
                action: "wp-remove-post-lock",
                _wpnonce: a("#_wpnonce").val(),
                post_ID: a("#post_ID").val(),
                active_post_lock: a("#active_post_lock").val()
            }
        }))
    }), a("#post-preview").click(function() {
        return "1" == a("#auto_draft").val() && notSaved ? (autosaveDelayPreview = !0, autosave(), !1) : (doPreview(), !1)
    }), doPreview = function() {
        a("input#wp-preview").val("dopreview"), a("form#post").attr("target", "wp-preview").submit().attr("target", "");
        var b = navigator.userAgent.toLowerCase(); - 1 != b.indexOf("safari") && -1 == b.indexOf("chrome") && a("form#post").attr("action", function(a, b) {
            return b + "?t=" + (new Date).getTime()
        }), a("input#wp-preview").val("")
    }, a("#title").on("keydown.editor-focus", function(b) {
        var c;
        9 == b.which && (b.ctrlKey || b.altKey || b.shiftKey || ("undefined" != typeof tinymce && (c = tinymce.get("content")), c && !c.isHidden() ? a(this).one("keyup", function() {
            a("#content_tbl td.mceToolbar > a").focus()
        }) : a("#content").focus(), b.preventDefault()))
    }), "1" == a("#auto_draft").val() && a("#title").blur(function() {
        this.value && "1" == a("#auto_draft").val() && delayed_autosave()
    }), a(document).on("heartbeat-connection-lost.autosave", function(b, c, d) {
        if ("timeout" === c || 503 == d) {
            var e = a("#lost-connection-notice");
            wp.autosave.local.hasStorage || e.find(".hide-if-no-sessionstorage").hide(), e.show(), autosave_disable_buttons()
        }
    }).on("heartbeat-connection-restored.autosave", function() {
        a("#lost-connection-notice").hide(), autosave_enable_buttons()
    })
}), autosave = function() {
    var a, b, c = wp.autosave.getPostData();
    return blockSave = !0, c.autosave ? "block" == jQuery("#TB_window").css("display") ? !1 : (a = wp.autosave.getCompareString(c), a == autosaveLast ? !1 : (autosaveLast = a, jQuery(document).triggerHandler("wpcountwords", [c.content]), autosave_disable_buttons(), b = "1" == c.auto_draft ? autosave_saved_new : autosave_saved, jQuery.ajax({
        data: c,
        beforeSend: autosave_loading,
        type: "POST",
        url: ajaxurl,
        success: b
    }), !0)) : !1
}, window.wp = window.wp || {}, wp.autosave = wp.autosave || {}, function(a) {
    wp.autosave.getPostData = function() {
        var b, c, d = "undefined" != typeof tinymce ? tinymce.activeEditor : null,
            e = [],
            f = {
                action: "autosave",
                autosave: !0,
                post_id: a("#post_ID").val() || 0,
                autosavenonce: a("#autosavenonce").val() || "",
                post_type: a("#post_type").val() || "",
                post_author: a("#post_author").val() || "",
                excerpt: a("#excerpt").val() || ""
            };
        if (d && !d.isHidden()) {
            if (d.plugins.spellchecker && d.plugins.spellchecker.active) return f.autosave = !1, f;
            "mce_fullscreen" == d.id && tinymce.get("content").setContent(d.getContent({
                format: "raw"
            }), {
                format: "raw"
            }), tinymce.triggerSave()
        }
        return "undefined" != typeof fullscreen && fullscreen.settings.visible ? (f.post_title = a("#wp-fullscreen-title").val() || "", f.content = a("#wp_mce_fullscreen").val() || "") : (f.post_title = a("#title").val() || "", f.content = a("#content").val() || ""), a('input[id^="in-category-"]:checked').each(function() {
            e.push(this.value)
        }), f.catslist = e.join(","), (b = a("#post_name").val()) && (f.post_name = b), (c = a("#parent_id").val()) && (f.parent_id = c), a("#comment_status").prop("checked") && (f.comment_status = "open"), a("#ping_status").prop("checked") && (f.ping_status = "open"), "1" == a("#auto_draft").val() && (f.auto_draft = "1"), f
    }, wp.autosave.getCompareString = function(b) {
        return "object" == typeof b ? (b.post_title || "") + "::" + (b.content || "") + "::" + (b.excerpt || "") : (a("#title").val() || "") + "::" + (a("#content").val() || "") + "::" + (a("#excerpt").val() || "")
    }, wp.autosave.local = {
        lastSavedData: "",
        blog_id: 0,
        hasStorage: !1,
        checkStorage: function() {
            var a = Math.random(),
                b = !1;
            try {
                sessionStorage.setItem("wp-test", a), b = sessionStorage.getItem("wp-test") == a, sessionStorage.removeItem("wp-test")
            } catch (c) {}
            return this.hasStorage = b, b
        },
        getStorage: function() {
            var a = !1;
            return this.hasStorage && this.blog_id && (a = sessionStorage.getItem("wp-autosave-" + this.blog_id), a = a ? JSON.parse(a) : {}), a
        },
        setStorage: function(a) {
            var b;
            return this.hasStorage && this.blog_id ? (b = "wp-autosave-" + this.blog_id, sessionStorage.setItem(b, JSON.stringify(a)), null !== sessionStorage.getItem(b)) : !1
        },
        getData: function() {
            var b = this.getStorage(),
                c = a("#post_ID").val();
            return b && c ? b["post_" + c] || !1 : !1
        },
        setData: function(b) {
            var c = this.getStorage(),
                d = a("#post_ID").val();
            if (!c || !d) return !1;
            if (b) c["post_" + d] = b;
            else {
                if (!c.hasOwnProperty("post_" + d)) return !1;
                delete c["post_" + d]
            }
            return this.setStorage(c)
        },
        save: function(b) {
            var c, d, e = !1;
            return b ? (c = this.getData() || {}, a.extend(c, b), c.autosave = !0) : c = wp.autosave.getPostData(), c.autosave ? (d = wp.autosave.getCompareString(c), d == this.lastSavedData ? !1 : (c.save_time = (new Date).getTime(), c.status = a("#post_status").val() || "", e = this.setData(c), e && (this.lastSavedData = d), e)) : !1
        },
        init: function(b) {
            var c = this;
            this.checkStorage() && (a("#content").length || a("#excerpt").length) && (b && a.extend(this, b), this.blog_id || (this.blog_id = "undefined" != typeof window.autosaveL10n ? window.autosaveL10n.blog_id : 0), a(document).ready(function() {
                c.run()
            }))
        },
        run: function() {
            var b = this;
            this.checkPost(), this.schedule = a.schedule({
                time: 15e3,
                func: function() {
                    wp.autosave.local.save()
                },
                repeat: !0,
                protect: !0
            }), 
            a("form#post").on("submit.autosave-local",
             function() {
                var c = "undefined" != typeof tinymce && tinymce.get("content"),
                    d = a("#post_ID").val() || 0;
                c && !c.isHidden() ? c.onSubmit.add(function() {
                    wp.autosave.local.save({
                        post_title: a("#title").val() || "",
                        content: a("#content").val() || "",
                        excerpt: a("#excerpt").val() || ""
                    })
                }) : b.save({
                    post_title: a("#title").val() || "",
                    content: a("#content").val() || "",
                    excerpt: a("#excerpt").val() || ""
                }), wpCookies.set("wp-saving-post-" + d, "check")
            })
        },
        compare: function(a, b) {
            function c(a) {
                return a.toString().replace(/[\x20\t\r\n\f]+/g, "")
            }
            return c(a || "") == c(b || "")
        },
        checkPost: function() {
            var b, c, d, e, f = this,
                g = this.getData(),
                h = a("#post_ID").val() || 0,
                i = wpCookies.get("wp-saving-post-" + h);
            if (g) return i && (wpCookies.remove("wp-saving-post-" + h), "saved" == i) ? (this.setData(!1), void 0) : (a("#has-newer-autosave").length || (b = a("#content").val() || "", c = a("#title").val() || "", d = a("#excerpt").val() || "", a("#wp-content-wrap").hasClass("tmce-active") && "undefined" != typeof switchEditors && (b = switchEditors.pre_wpautop(b)), "check" != i && this.compare(b, g.content) && this.compare(c, g.post_title) && this.compare(d, g.excerpt) || (this.restore_post_data = g, this.undo_post_data = {
                content: b,
                post_title: c,
                excerpt: d
            }, e = a("#local-storage-notice"), a(".wrap h2").first().after(e.addClass("updated").show()), e.on("click", function(b) {
                var c = a(b.target);
                c.hasClass("restore-backup") ? (f.restorePost(f.restore_post_data), c.parent().hide(), a(this).find("p.undo-restore").show()) : c.hasClass("undo-restore-backup") && (f.restorePost(f.undo_post_data), c.parent().hide(), a(this).find("p.local-restore").show()), b.preventDefault()
            }))), void 0)
        },
        restorePost: function(b) {
            var c;
            return b ? (this.lastSavedData = wp.autosave.getCompareString(b), a("#title").val() != b.post_title && a("#title").focus().val(b.post_title || ""), a("#excerpt").val(b.excerpt || ""), c = "undefined" != typeof tinymce && tinymce.get("content"), c && !c.isHidden() && "undefined" != typeof switchEditors ? (c.undoManager.add(), c.setContent(b.content ? switchEditors.wpautop(b.content) : "")) : (a("#content-html").click(), a("#content").val(b.content)), !0) : !1
        }
    }, wp.autosave.local.init()
}(jQuery);
Copy after login
Copy after login

ckeditor 中的js

<code class="lang-javascript"><br><br>var editorCKE;
jQuery(document).ready(function () {
    ckeditorSettings.configuration['on'] = {
        configLoaded : function ( evt ) {
            if (typeof(ckeditorSettings.externalPlugins) != 'undefined') {
                var externals=new Array();
                for (var x in ckeditorSettings.externalPlugins) {
                    CKEDITOR.plugins.addExternal(x, ckeditorSettings.externalPlugins[x]);
                    externals.push(x);
                }
            }
            evt.editor.config.extraPlugins += (evt.editor.config.extraPlugins ? ','+externals.join(',') : externals.join(','));
            if (evt.editor.config[evt.editor.config.toolbar +'_removeButtons']);
                evt.editor.config.removeButtons = evt.editor.config[evt.editor.config.toolbar +'_removeButtons'];
            CKEDITOR.addCss(evt.editor.config.extraCss);
        }
    };
    CKEDITOR.on( 'instanceReady', function( ev )
    {
        var dtd = CKEDITOR.dtd;
        for ( var e in CKEDITOR.tools.extend( {}, dtd.$nonBodyContent, dtd.$block, dtd.$listItem, dtd.$tableContent ) )
        {
            ev.editor.dataProcessor.writer.setRules( e, ckeditorSettings.outputFormat);
        }
        ev.editor.dataProcessor.writer.setRules( 'br',
        {
            breakAfterOpen : true
        });
        ev.editor.dataProcessor.writer.setRules( 'pre',
        {
            indent: false
        });
        editorCKE = CKEDITOR.instances['content'];
    });

    if (ckeditorSettings.textarea_id != 'comment'){
        edInsertContentOld = function () {
            return ;
        };
        if(typeof(window.edInsertContent) != 'undefined'){
            edInsertContentOld = window.edInsertContent;
        }
        window.edInsertContent = function (myField, myValue) {
            if(typeof(CKEDITOR) != 'undefined' && typeof(editorCKE) != 'undefined'){
                editorCKE.insertHtml(myValue);
            } else {
                edInsertContentOld(myField, myValue);
            }
        };
        var autosaveOld = function () {
            return ;
        };
        if(typeof(window.autosave) != 'undefined'){
            autosaveOld = window.autosave;
        }

        if(typeof(window.switchEditors) != 'undefined') {
            window.switchEditors.go = function(id, mode) {
                if ('tinymce' == mode || 'tmce' == mode) {
                    jQuery('#'+id).closest('.html-active').removeClass('html-active').addClass('tmce-active');
                    ckeditorOn(id);
                } else {
                    jQuery('#'+id).closest('.tmce-active').removeClass('tmce-active').addClass('html-active');
                    ckeditorOff(id);
                    jQuery('.js .theEditor').attr('style', 'color: black;');
                }
            };
        }
    }
    //if qTranslate plugin enabled
    if ( ckeditorSettings.qtransEnabled ){
        //custom version of switchEditors function when qTranslate plugin is enabled
        if(typeof(window.switchEditors) != 'undefined') {
            window.switchEditors.go = function(id, lang) {

                id = id || 'content';
                lang = lang || 'toggle';

                if ( 'toggle' == lang ) {
                    if ( ed && !ed.isHidden() )
                        lang = 'html';
                    else
                        lang = 'tmce';
                } else if( 'tinymce' == lang )
                    lang = 'tmce';

                var inst = tinyMCE.get('qtrans_textarea_' + id);
                var vta = document.getElementById('qtrans_textarea_' + id);
                var ta = document.getElementById(id);
                var wrap_id = 'wp-'+id+'-wrap';

                // update merged content
                if(inst && ! inst.isHidden()) {
                    tinyMCE.triggerSave();
                } else {
                    qtrans_save(vta.value);
                }
                // check if language is already active
                if(lang!='tmce' && lang!='html' && document.getElementById('qtrans_select_'+lang).className=='wp-switch-editor switch-tmce switch-html') {
                    return;
                }

                if(lang!='tmce' && lang!='html') {
                    document.getElementById('qtrans_select_'+qtrans_get_active_language()).className='wp-switch-editor';
                    document.getElementById('qtrans_select_'+lang).className='wp-switch-editor switch-tmce switch-html';
                }
                if(lang=='html') {
                    if ( inst && inst.isHidden() )
                        return false;
                    if ( inst ) {
                        vta.style.height = inst.getContentAreaContainer().offsetHeight + 20 + 'px';
                        inst.hide();
                    }
                    jQuery("#"+wrap_id).removeClass('tmce-active');
                    jQuery("#"+wrap_id).addClass('html-active');
                    setUserSetting( 'editor', 'html' );
                } else if(lang=='tmce') {
                    if(inst && ! inst.isHidden())
                        return false;
                    if ( tinyMCEPreInit.mceInit[id] && tinyMCEPreInit.mceInit[id].wpautop )
                        vta.value = this.wpautop(qtrans_use(qtrans_get_active_language(),ta.value));
                    if (inst) {
                        inst.show();
                    } else {
                        qtrans_hook_on_tinyMCE(id);
                    }
                    jQuery("#"+wrap_id).removeClass('html-active');
                    jQuery("#"+wrap_id).addClass('tmce-active');
                    setUserSetting('editor', 'tinymce');
                } else {
                    // switch content
                    qtrans_assign('qtrans_textarea_'+id,qtrans_use(lang,ta.value));
                }
            }
        }
        jQuery('#edButtonHTML').addClass('active');
        jQuery('#edButtonPreview').removeClass('active');
        if(ckeditorSettings.textarea_id != 'comment'){

            ckeditorSettings.textarea_id = 'qtrans_textarea_content';
            ckeditorSettings.configuration['on'].getData = function (evt) {
                evt.data.dataValue = evt.data.dataValue.replace(/(^)|(<p>$)/g, '');
                evt.data.dataValue = evt.data.dataValue.replace(/^</p>
<p>(\s|\n|\r)*</p>
<p>/g, '</p>
<p>');
                evt.data.dataValue = evt.data.dataValue.replace(/(\s|\n|\r)*(\s|\n|\r)*$/g, '');
                qtrans_save(evt.data.dataValue);
            };
            if ( jQuery('#'+ckeditorSettings.textarea_id).length && typeof CKEDITOR.instances[ckeditorSettings.textarea_id] == 'undefined' ) {
                CKEDITOR.replace(ckeditorSettings.textarea_id, ckeditorSettings.configuration);
                editorCKE = CKEDITOR.instances[ckeditorSettings.textarea_id];
                //add afterCommandExec exect to last created CKEditor instance
                editorCKE.on( 'afterCommandExec', function(ev) {
                    afterCommandEvent(ev);
                });
            }

            window.tinyMCE = tinymce =  getTinyMCEObject();
        }
    }else {
        if(ckeditorSettings.autostart && (typeof getUserSetting == 'undefined' || getUserSetting('editor') === '' || getUserSetting('editor') == 'tinymce')){
            ckeditorOn();
        }
    }
    jQuery("#update-gallery").click(function(){
        updateCkeGallery();
    });

    if (ckeditorSettings.excerpt_state && jQuery("textarea#excerpt").length > 0 && jQuery("#postexcerpt-hide").attr('checked') == 'checked') {
        //ckeditorOn('excerpt');
        CKEDITOR.replace('excerpt', ckeditorSettings.configuration);
    }
    if (typeof window.tinyMCE != 'undefined') {
        if (typeof QTags != 'undefined') {
            jQuery(".row-actions span.reply a").live('click', function(){
                if (typeof CKEDITOR.instances['replycontent'] != 'undefined') {
                    ckeditorOff('replycontent');
                }
                CKEDITOR.replace('replycontent', {'basicEntities' : false, 'entities': false,'toolbar_Comments' : [{ name: 'basicstyles', items : [ 'Bold','Italic','Underline'] }, { name: 'links', items : [ 'Link','Unlink' ] },{ name: 'paragraph', items : [ 'NumberedList','BulletedList'] }, { name: 'insert', items : [ 'Image' ] } ],  'toolbar' : 'Comments'});
            });
            jQuery("#replyrow a.save").unbind('click').live('click', function(){
                var data = null;
                if (typeof CKEDITOR.instances['replycontent'] != 'undefined') {
                    data = CKEDITOR.instances['replycontent'].getData();
                }
                if (data != null && data.length > 0 ) {
                    jQuery('textarea#replycontent').html(data);
                    ckeditorOff('replycontent');
                }
                commentReply.send();
                return;
            });
            jQuery("#replyrow a.cancel").unbind('click').live('click', function(){
                commentReply.revert()
                ckeditorOff('replycontent');
                return;
            });
            QTags.getInstance = function (editor_id) {
                return window.tinyMCE;
            }
        }
    }
});
function ckeditorOn(id) {
    var instance;
    if (typeof(id) != 'undefined' && typeof(CKEDITOR.instances[id]) == 'undefined' )
    {
        setUserSetting( 'editor', 'tinymce' );
        jQuery('#quicktags').hide();
        jQuery('#edButtonPreview').addClass('active');
        jQuery('#edButtonHTML').removeClass('active');
        instance = CKEDITOR.replace(id, ckeditorSettings.configuration);
    }
    if ( jQuery('textarea#'+ckeditorSettings.textarea_id).length && (typeof(CKEDITOR.instances) == 'undefined' || typeof(CKEDITOR.instances[ckeditorSettings.textarea_id]) == 'undefined' ) && jQu</p></code>
Copy after login
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Roblox: Bubble Gum Simulator Infinity - How To Get And Use Royal Keys
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusion System, Explained
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers Of The Witch Tree - How To Unlock The Grappling Hook
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

Java Tutorial
1670
14
PHP Tutorial
1274
29
C# Tutorial
1256
24
How to adjust the wordpress article list How to adjust the wordpress article list Apr 20, 2025 am 10:48 AM

There are four ways to adjust the WordPress article list: use theme options, use plugins (such as Post Types Order, WP Post List, Boxy Stuff), use code (add settings in the functions.php file), or modify the WordPress database directly.

How to build a website for wordpress host How to build a website for wordpress host Apr 20, 2025 am 11:12 AM

To build a website using WordPress hosting, you need to: select a reliable hosting provider. Buy a domain name. Set up a WordPress hosting account. Select a topic. Add pages and articles. Install the plug-in. Customize your website. Publish your website.

How to import the source code of wordpress How to import the source code of wordpress Apr 20, 2025 am 11:24 AM

Importing WordPress source code requires the following steps: Create a sub-theme for theme modification. Import the source code and overwrite the files in the sub-topic. Activate the sub-theme to make it effective. Test the changes to make sure everything works.

The Compatibility of IIS and PHP: A Deep Dive The Compatibility of IIS and PHP: A Deep Dive Apr 22, 2025 am 12:01 AM

IIS and PHP are compatible and are implemented through FastCGI. 1.IIS forwards the .php file request to the FastCGI module through the configuration file. 2. The FastCGI module starts the PHP process to process requests to improve performance and stability. 3. In actual applications, you need to pay attention to configuration details, error debugging and performance optimization.

What happens if session_start() is called multiple times? What happens if session_start() is called multiple times? Apr 25, 2025 am 12:06 AM

Multiple calls to session_start() will result in warning messages and possible data overwrites. 1) PHP will issue a warning, prompting that the session has been started. 2) It may cause unexpected overwriting of session data. 3) Use session_status() to check the session status to avoid repeated calls.

How to register a wordpress account How to register a wordpress account Apr 20, 2025 am 11:45 AM

To create an account on WordPress, simply visit its website, select the registration option, fill in the registration form, and verify your email address. Other ways to register include using a Google account or Apple ID. The benefits of signing up include creating a website, gaining features, joining the community, and gaining support.

Composer: Aiding PHP Development Through AI Composer: Aiding PHP Development Through AI Apr 29, 2025 am 12:27 AM

AI can help optimize the use of Composer. Specific methods include: 1. Dependency management optimization: AI analyzes dependencies, recommends the best version combination, and reduces conflicts. 2. Automated code generation: AI generates composer.json files that conform to best practices. 3. Improve code quality: AI detects potential problems, provides optimization suggestions, and improves code quality. These methods are implemented through machine learning and natural language processing technologies to help developers improve efficiency and code quality.

How to write a header of a wordpress How to write a header of a wordpress Apr 20, 2025 pm 12:09 PM

The steps to create a custom header in WordPress are as follows: Edit the theme file "header.php". Add your website name and description. Create a navigation menu. Add a search bar. Save changes and view your custom header.

See all articles