插入AJAX后初始化TinyMCE编辑器/可视编辑器


11

我在自定义选项页面上有一个“中继器”样式字段组。有一个处于隐藏状态的活动可视编辑器,当用户单击“添加新”时,整个行将被克隆。然后,我需要在克隆行中初始化可视编辑器。我的代码:

$('.repeater-add-new').click(function(event) {
    event.preventDefault();
    var target = $(this).data('repeater');
    $( '#' + target).find('.repeater-row:not(.clone) .repeater-content.in').collapse();
    var newRow = $( '#' + target + ' .repeater-row.clone' ).clone().appendTo( '#' + target + ' .repeater-row-wrapper' ).removeClass('clone');
    rebuildIndex(target);

    // Initialize editors if needed
    newRow.find('.wp-editor-wrap').each(function(index, el) {
        var ed_id = $(this).find('textarea').attr('id');

        tinymce.init(tinyMCEPreInit.mceInit[ed_id]);
        tinymce.execCommand('mceAddEditor', false, ed_id); 
        quicktags({id : ed_id});
    });
});

界面截图:

屏幕截图

页面加载后,出现控制台错误:

未捕获的TypeError:无法读取未定义的属性'onpageload'

当然,编辑器不起作用。保存页面后,它当然可以正常工作,但是在添加行时也需要它能正常工作。


您是否已解决问题“ onpageload”的解决方案
Kvvaradha

看来您可能还需要使用快速标记注册一些内容。我不确定100%的安全性,因为我无法在本地进行测试,但您可以从stackoverflow.com/questions/21519322/…开始,看看是否有帮助。
phatskat

嘿,又遇到了这个。OP,您能否添加一个片段,说明如何将这些字段之一添加到帖子编辑器中?我可以尝试在本地进行复制,如果可以提供一种自己站立的方法,可以对其进行深入研究。
phatskat

嘿@phatskat,谢谢。实际上,我最终完全转向了另一个方向...客户希望将该系统打包以用于商业销售,因此我们使用不带ACF的自定义界面重新编写了所有内容。感谢提供帮助!
杰克·阿图罗

Answers:


1

您是否设法在不包含JavaScript的情况下使编辑器正常工作?如果是这样,请尝试创建一个包含可用的tinymce编辑器的模板,然后使用WithDataAndEventsjQuery clone()函数设置为true 的参数重写JavaScript以复制该模板。

例如:

$('.cloner').click(function(){
  $('.container').append($('.template').clone(true).removeClass('hidden'));
});
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.