如何在UpdatePanel中回发后保留TinyMCE

时间:2010-08-17 13:28:35

标签: c# asp.net tinymce

当我点击导致UpdatePanel回发的按钮时,它会调用tinyMCE.triggerSave()

重新加载面板并且编辑器再次显示,但是当我第二次尝试调用tinyMCE.triggerSave()时出现以下错误:

g.win.document is null

我虽然得到了旧实例,但在调用save之后我也删除了控件(tinyMCE.execCommand('mceRemoveControl',false,'Editor');)。即便如此,它仍然第二次崩溃。

我该如何解决?

5 个答案:

答案 0 :(得分:6)

tinyMCE.execCommand( 'mceRemoveControl',真, '编辑器');

在离开UpdatePanel之前,它会强制tinyMCE完全删除,然后当你再次添加时它不会崩溃。

答案 1 :(得分:2)

经过多次混淆后,我发现@André Gadonski发布的修补程序不再适用于TinyMCE版本4.它不仅不起作用,而且没有向控制台提供错误反馈!

新命令为mceRemoveEditor

来源:http://www.tinymce.com/forum/viewtopic.php?id=31256

我发现这可以在重新启动TinyMCE之前直接使用,或者在ASP更新面板使用之前刷新;

var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_beginRequest(BeginRequestHandler);

function BeginRequestHandler(sender, args) {
    tinymce.execCommand('mceRemoveEditor', true, 'EditorID');
}

答案 2 :(得分:2)

对于tinymce 3.2.x,使用以下命令删除IE8或任何其他浏览器中的tinyMCE实例。由于tinymce.execCommand函数使输入字段在IE8中不可编辑。

tinyMCE.remove(editor); //editor is instance of tinymce editor and not editor id

这将修复“Permission Denied”错误,而不会禁用同一页面中的其他输入字段。

答案 3 :(得分:2)

我有同样的问题。为了解决这个问题,你可以添加元素创建回发的脚本代码。我的按钮创建回发后,我添加它OnClientClick():

<asp:LinkButton ID="lbnSave" OnClick="lbnSave_Click" ToolTip="Add New" OnClientClick="dotim()"
                        runat="server">save</asp:LinkButton>

和脚本是:

function dotim() {
   tinyMCE.triggerSave();
  } // this is my attempt at a fix

答案 4 :(得分:0)

这对我很有帮助。

我在角度2中使用了tinymce。但是,当我重定向后,tinymce消失了。 我猜是因为重用了tinymce。 因此,在使用前,我删除了tinymce。

tinymce.execCommand('mceRemoveEditor', true, 'templateEditor');
  tinymce.init({
    selector: '#templateEditor',
    menubar: false,
    plugins: ['autoresize']
  });

谢谢。