TinyMCE Ajax。如何在回调期间找到编辑器?(TinyMCE.get不起作用)

TinyMCE Ajax。如何在回调期间找到编辑器?(TinyMCE.get不起作用),tinymce,Tinymce,我正在做一些我认为相当标准的事情: 在Ajax应用程序中,我通过 a) 向DOM动态添加textarea。textarea的id存储在名为editField的变量中 b) 我把TinyMCE像这样包起来: tinyMCE.execCommand("mceAddControl", false, jq(editField).attr('id')); c) 我向服务器发出一个ajax调用,以获取要编辑的数据,在回调中,我想将其放入编辑器中 tinyMCE.get( jq(editField).att

我正在做一些我认为相当标准的事情:

在Ajax应用程序中,我通过

a) 向DOM动态添加textarea。textarea的id存储在名为editField的变量中

b) 我把TinyMCE像这样包起来:

tinyMCE.execCommand("mceAddControl", false, jq(editField).attr('id'));
c) 我向服务器发出一个ajax调用,以获取要编辑的数据,在回调中,我想将其放入编辑器中

tinyMCE.get( jq(editField).attr('id') ).setContent(data);
但是,当我从ajax调用返回回调时

tinyMCE.get( jq(editField).attr('id') ) 
正在返回未定义的

编辑似乎在工作。我可以使用它,甚至可以通过tinyMCE.activeEditor访问它(当我尝试保存时会发生这种情况)。但我现在无法通过get获得它

因此,要么:

a) 当回调返回时,tinyMCE没有完全实例化

b) 还有别的事情


你知道我如何测试这个吗?人们如何解决这个问题呢?

为什么不使用editField而不是使用jquery节点的id属性(?)(性能也应该更好):


这行吗?

为什么不使用editField而不是使用jquery节点(?)的id属性(性能也应该更好):


这行吗?

行。我解决了这个问题。但不是很优雅

我真正的问题是TinyMCE编辑器没有在ajax调用返回时完全实例化

我最后做的是:

1) 在ajax回调中:

a) 开始使用addControl命令实例化编辑器

b) 用服务器返回的值填充全局变量(MY_global)

2) 当我调用tinyMCE.init()时,我会给它传递一个OnInit事件的回调。这需要两个步骤:

a) 定义一个“setup”函数,将OnInit回调处理程序添加到tinyMCE。回调检查全局变量(在这个简化中为MY_global),并将其值插入到“this”中的tinyMCE实例中

b) 将此设置传递到tinyMCE.init

var config = {
  blah : blah,
  setup : setup
};
tinyMCE.init(config);

现在ajax调用仍然会在实例化tinyMCE之前返回其值,因此它会填充MY_GLOBAL。然后,当编辑器最终出现时,它会触发OnInit回调,该回调会找到保存在MY_GLOBAL中的值并将其放入编辑器。

确定。我解决了这个问题。但不是很优雅

tinyMCE.get( jq(editField).attr('id') ).setContent(data);
我真正的问题是TinyMCE编辑器没有在ajax调用返回时完全实例化

我最后做的是:

1) 在ajax回调中:

a) 开始使用addControl命令实例化编辑器

b) 用服务器返回的值填充全局变量(MY_global)

2) 当我调用tinyMCE.init()时,我会给它传递一个OnInit事件的回调。这需要两个步骤:

a) 定义一个“setup”函数,将OnInit回调处理程序添加到tinyMCE。回调检查全局变量(在这个简化中为MY_global),并将其值插入到“this”中的tinyMCE实例中

b) 将此设置传递到tinyMCE.init

var config = {
  blah : blah,
  setup : setup
};
tinyMCE.init(config);

现在ajax调用仍然会在实例化tinyMCE之前返回其值,因此它会填充MY_GLOBAL。然后,当编辑器最终出现时,它会触发OnInit回调,该回调会找到保存在MY_GLOBAL中的值并将其放入编辑器。

找到了另一个解决方案:

tinyMCE.get( jq(editField).attr('id') ).setContent(data);
while(tinyMCE.get === 'undefined'){
        try {
            var ed = tinyMCE.get('your_mce_div');                   
        } catch (e) {
            // TODO: handle exception
        }
    }

对我有用。可能对某人有用。

找到了另一种解决方案:

while(tinyMCE.get === 'undefined'){
        try {
            var ed = tinyMCE.get('your_mce_div');                   
        } catch (e) {
            // TODO: handle exception
        }
    }

对我有用。也许它对某人有用。

你试过tinyMCE.get(0)吗

你试过tinyMCE.get(0)吗

您有一个未知的函数“jq”,因此了解它是否返回正确的id值会很有帮助。jq只是jQuery的$版本。是的,它返回了正确的值。至少它在每种情况下都产生了相同的价值。(即,它的值与附加tinyMCE时使用的值相同。)您有一个未知函数“jq”,因此了解它是否返回正确的id值会很有帮助。jq只是jQuery的$版本。是的,它返回了正确的值。至少它在每种情况下都产生了相同的价值。(即,它的值与连接tinyMCE时使用的值相同。)事实上,你是对的。但这不是问题所在。这没什么区别。下次我需要它时,编辑器还没有完全实例化。事实上,你是对的。但这不是问题所在。这没什么区别。下次我需要它时,编辑器还没有完全实例化。