2013-07-22 300 views
1

我需要在tinyMCE中禁用撤消/重做功能。我看到了这个文件,我用这个功能:tinyMCE禁用撤销/重做功能

ed.onUndo.add(function(ed, e) { 
       tinymce.dom.Event.cancel(e); 
       e.preventDefault(); 
       return false; 
      }); 
ed.onRedo.add(function(ed, e) { 
       tinymce.dom.Event.cancel(e); 
       e.preventDefault(); 
       return false; 
      }); 

但没有任何成功。 注意:ed是我的活动编辑器。

+0

+1好问题 – Thariama

回答

0

我们遇到了同样的问题,但解决方案有点不方便。 tinymce核心中有一个我们需要覆盖的类:tinymce.UndoManager

我们使用了一个粘贴到编辑器对象的变量来决定是否应该实际创建撤消步骤:tinymce.activeEditor.disable_undo_creation。 下面是改写类的代码部分:

 add : function(level) { 

      if (tinymce.activeEditor.disable_undo_creation) return; 

      var i, settings = editor.settings, lastLevel; 

      level = level || {}; 
      level.content = getContent(); 

      // Add undo level if needed 
      lastLevel = data[index]; 
      if (lastLevel && lastLevel.content == level.content) 
       return null; 

      // Time to compress 
      if (settings.custom_undo_redo_levels) { 
       if (data.length > settings.custom_undo_redo_levels) { 
        for (i = 0; i < data.length - 1; i++) 
         data[i] = data[i + 1]; 

        data.length--; 
        index = data.length; 
       } 
      } 

      // Get a non intrusive normalized bookmark 
      level.bookmark = editor.selection.getBookmark(2, true); 

      // Crop array if needed 
      if (index < data.length - 1) 
       data.length = index + 1; 

      data.push(level); 
      index = data.length - 1; 

      self.onAdd.dispatch(self, level); 
      editor.isNotDirty = 0; 

      return level; 
     }, 

当编辑器无法创建撤消步骤重做/撤销将不再工作。

+0

我会试试这个,当我回到家里! – cyrat

3

如果您正在使用tinyMCE的4 *,您可以通过BeforeAddUndo事件返回禁用撤销/重做:

ed.on('BeforeAddUndo', function(e) { 
    return false; 
}); 
+0

男人,你救了我的一天! –

0

TinyMCE的V4 - 只需覆盖默认设置。

tinymce.init({ 
    selector: '#content', 
    toolbar: 'bold italic strikethrough underline | quicklink | alignleft aligncenter alignright alignjustify | link ', 
});