| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 | UE.plugin.register('autosave', function (){    var me = this,        //无限循环保护        lastSaveTime = new Date(),        //最小保存间隔时间        MIN_TIME = 20,        //auto save key        saveKey = null;    function save ( editor ) {        var saveData;        if ( new Date() - lastSaveTime < MIN_TIME ) {            return;        }        if ( !editor.hasContents() ) {            //这里不能调用命令来删除, 会造成事件死循环            saveKey && me.removePreferences( saveKey );            return;        }        lastSaveTime = new Date();        editor._saveFlag = null;        saveData = me.body.innerHTML;        if ( editor.fireEvent( "beforeautosave", {            content: saveData        } ) === false ) {            return;        }        me.setPreferences( saveKey, saveData );        editor.fireEvent( "afterautosave", {            content: saveData        } );    }    return {        defaultOptions: {            //默认间隔时间            saveInterval: 500,            enableAutoSave: true        },        bindEvents:{            'ready':function(){                var _suffix = "-drafts-data",                    key = null;                if ( me.key ) {                    key = me.key + _suffix;                } else {                    key = ( me.container.parentNode.id || 'ue-common' ) + _suffix;                }                //页面地址+编辑器ID 保持唯一                saveKey = ( location.protocol + location.host + location.pathname ).replace( /[.:\/]/g, '_' ) + key;            },            'contentchange': function () {                if (!me.getOpt('enableAutoSave')) {                    return;                }                if ( !saveKey ) {                    return;                }                if ( me._saveFlag ) {                    window.clearTimeout( me._saveFlag );                }                if ( me.options.saveInterval > 0 ) {                    me._saveFlag = window.setTimeout( function () {                        save( me );                    }, me.options.saveInterval );                } else {                    save(me);                }            }        },        commands:{            'clearlocaldata':{                execCommand:function (cmd, name) {                    if ( saveKey && me.getPreferences( saveKey ) ) {                        me.removePreferences( saveKey )                    }                },                notNeedUndo: true,                ignoreContentChange:true            },            'getlocaldata':{                execCommand:function (cmd, name) {                    return saveKey ? me.getPreferences( saveKey ) || '' : '';                },                notNeedUndo: true,                ignoreContentChange:true            },            'drafts':{                execCommand:function (cmd, name) {                    if ( saveKey ) {                        me.body.innerHTML = me.getPreferences( saveKey ) || '<p>'+domUtils.fillHtml+'</p>';                        me.focus(true);                    }                },                queryCommandState: function () {                    return saveKey ? ( me.getPreferences( saveKey ) === null ? -1 : 0 ) : -1;                },                notNeedUndo: true,                ignoreContentChange:true            }        }    }});
 |