jQuery 按需加载 TinyMCE 4

Oli*_*ryn 3 html javascript jquery tinymce cross-domain

我尝试使用 jQuery 从 CDN 按需加载 TinyMCE 4,但没有成功。我希望避免在页面加载时加载 TinyMCE,因为它是一组(相对)庞大的脚本,相反,我计划在用户单击按钮时触发加载它。这是我所拥有的:

HTML:

...
<script src='//ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js'></script>
...
Run Code Online (Sandbox Code Playgroud)

jQuery:

...
if (typeof TinyMCE == 'undefined') {
  $.getScript('//tinymce.cachefly.net/4/tinymce.min.js', function() {
    alert('Loaded!');

    tinymce.init({
      selector: 'textarea',
      plugins: [
        'autolink contextmenu image link table'
      ],
      menubar: false,
      statusbar: false,
      toolbar: false
    });
  });
}
...
Run Code Online (Sandbox Code Playgroud)

我可以看到 jQuery 确实获取了脚本,因为我可以在检查器中看到网络活动。回调方法被调用,我可以看到Loaded!对话框出现,但 TinyMCE 没有初始化。JavaScript 控制台不显示任何错误。

关于如何让 TinyMCE 初始化有什么想法吗?

感谢您的时间。

小智 5

Tinymce在动态加载时无法解析baseURL,因此我们必须对其进行硬编码。
添加以下内容:

if (typeof tinymce == 'undefined') {
    $.getScript('//tinymce.cachefly.net/4/tinymce.min.js', function () {
        window.tinymce.dom.Event.domLoaded = true;
        tinymce.baseURL = "//tinymce.cachefly.net/4";
        tinymce.suffix = ".min";
        tinymce.init({
            selector: 'textarea',
            plugins: ['autolink contextmenu image link table'],
            menubar: false,
            statusbar: false,
            toolbar: false
        });
    });
}
Run Code Online (Sandbox Code Playgroud)