bootstrap3 wysiwyg编辑器对象未定义

bootstrap3-wysiwyg editor object aways undefined

本文关键字:未定义 对象 编辑器 wysiwyg bootstrap3      更新时间:2023-09-26

我使用这个富文本:https://github.com/bootstrap-wysiwyg/bootstrap3-wysiwyg

它工作得很好,但我需要获得wysihtml5编辑器对象来运行一些命令

医生说我可以用这个代码得到wysihtml5编辑器对象:

var wysihtml5Editor = $('#some-textarea').data("wysihtml5").editor;
wysihtml5Editor.composer.commands.exec("bold");

但是wysihtml5Editor是一个未定义的

记录$('#some textarea').data("wysihtml5")打印此:

Wysihtml5 {el: n.fn.init[1], toolbar: n.fn.init[1], editor:undefined}

如何获取编辑器对象?

我自己找到了答案,但无论如何,感谢Daemeeor和DA。!

在bootstrap3-wyshtml5.js中,createEditor方法不会返回,因此

this.editor =  this.createEditor(toolbarOpts);

this.editor是未定义的

我像这个一样添加退货

  createEditor: function(options) {
    options = options || {};
    // Add the toolbar to a clone of the options object so multiple instances
    // of the WYISYWG don't break because 'toolbar' is already defined
    options = $.extend(true, {}, options);
    options.toolbar = this.toolbar[0];
    return this.initializeEditor(this.el[0], options);
  }

一切都好!

对于其他遇到这一问题的人(并在前面的答案上扩展一点),我发现在wysihtml5编辑器的各个分支中导航有点令人沮丧。

似乎还有很多问题或多或少与评论的问题有关("编辑返回未定义的"——这类问题)。

因此,对于初学者来说,这个问题似乎与这个特定的分叉有关:

https://github.com/bootstrap-wysiwyg/bootstrap3-wysiwyg

关于使用"wysihtml5"数据选择器获取wysihtml5编辑器对象的问题,文档指出:

您可以访问wysihtml5编辑器对象,如下所示:

var wysihtml5Editor = $('#some-textarea').data("wysihtml5").editor;
wysihtml5Editor.composer.commands.exec("bold");

为了实现这一点,您需要确保您引用的文件(无论是bootstrap3-wyshtml5.min.js还是bootstrap3-withml5.all.min.js)包含以下特定的提交:

https://github.com/bootstrap-wysiwyg/bootstrap3-wysiwyg/commit/aee1fee7886b34d01e8f238d64d2e6fd9388608c

正如Daemeeor所指出的:https://github.com/bootstrap-wysiwyg/bootstrap3-wysiwyg/issues/131-提交没有合并到分发中,只合并到源中。

无论如何,改变这个:

this.initializeEditor(this.el[0], options);

到这个

return this.initializeEditor(this.el[0], options);

可能会帮你(当然帮了我)。