5

我有一个可通过简单的 AJAX/jQuery 编辑按钮编辑的元素列表,效果很好。但是当我第二次尝试编辑同一个字段时,它不想打球。

  1. 编辑- AJAX 返回一个 tinyMCE 文本区域,其中包含来自 MySQL 的内容
  2. SAVE - AJAX 将 tinyMCE 内容发布到 MySQL 并显示发布的内容
  3. 编辑(再次) - 像往常一样返回相同的 tinyMCE 文本区域和内容
  4. SAVE(再次) - 第二次尝试保存,返回错误:g.win.document 为 null

代码片段

var content = tinyMCE.get('content').getContent(); //get tinyMCE content
$("#edititem").load("editItem.php", {content: content}); //jQuery post

解决方案- 这就是我的工作方式:

编辑- 编辑时,将 tinyMCE 控件添加到 textarea

tinyMCE.execCommand("mceAddControl",true,'content');

保存- 保存时,下次删除控件

tinyMCE.execCommand('mceRemoveControl',false,'content');
4

4 回答 4

2

只是想我会添加一个与上述解决方案结合使用的解决方案:

setTimeout(function() {tinyMCE.execCommand("mceAddControl", true, "content");}, 5);

无论出于何种原因,我不确定这是否是 DOM 操作的时间问题或其他原因,但微小的延迟会让生活变得更好。但是,它setTimeout()不能与使用 jQuery.each()方法结合使用,例如:

$("textarea").each(function(index) {
    tinyMCE.execCommand("mceAddControl", false, $(this).attr("id"));
});

那一定是一个完全不同的时间问题。

Anyhoo,我想我会分享这些发现,因为我相信其他人,甚至可能我再次会发现这篇文章很有帮助。

于 2010-05-20T13:36:29.733 回答
2
$(tinyMCE.editors).each(function(){
                            tinyMCE.remove(this);
                        });
于 2010-07-20T19:41:59.170 回答
1

我对 FCKeditor 更熟悉,但我认为它是相似的。TinyMCE 有 mceAddControl 命令来添加/创建编辑器实例。您在重新加载内容后是否这样做?

tinyMCE.execCommand('mceAddControl' ...
于 2009-03-31T01:22:02.407 回答
0

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

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

这将修复“权限被拒绝”错误,而不会禁用同一页面中的其他输入字段。

于 2014-10-26T10:15:11.057 回答