14
<textarea cols="50" id="txt" contenteditable="true" name="editor1" runat="server" rows="10"></textarea>
<script type="text/javascript" src="css-js/ckeditor.js"></script>
<script type="text/javascript">
  CKEDITOR.replace('txt', {                    
  });       
</script>

我在 js 上得到这个错误:

TypeError:无法调用'getEditor'未定义的方法

4

7 回答 7

18

首先,contenteditable="true"标签在您的情况下完全无效且已过时。此类属性仅与内联实例相关,并且由于<textarea>不可(内容)可编辑,因此您不需要它

无论如何,(即使有问题)你的代码对我来说就像一个魅力(小提琴)。作为解释,您看到的错误是在没有id传递到的元素时产生的CKEDITOR.replace(),即:

<textarea id="foo"></textarea>
<script type="text/javascript">
     CKEDITOR.replace( 'bar' ); // <textarea> is #foo, error will be thrown
</script>

确保您的 DOM 有效并且在被调用<textarea>时存在CKEDITOR.replace(工作异步?)。

于 2013-09-30T12:57:16.250 回答
3

利用

CKEDITOR.appendTo( 'txt' ); for DOM elements

CKEDITOR.replace( 'textarea' ); for textarea

好的伙计也试试这个

appendTo 和 replace 函数都位于 themedui.js 文件中

尝试单独添加,这是链接

http://docs.ckeditor.com/source/ckeditor.html#CKEDITOR

于 2013-09-30T08:50:55.273 回答
3

如果您只想摆脱它,请使用

try{CKEDITOR.replace('body')}catch{}

它会导致CKEDITOR在你想要的地方打开

于 2018-05-11T12:27:21.070 回答
1

我遇到了类似的问题并通过执行以下操作对其进行了排序;

<script src="/vendor/unisharp/laravel-ckeditor/ckeditor.js"></script>
<script>
    if($("textarea").length > 0){
        CKEDITOR.replace( 'ckeditor' );
    }
</script>
于 2019-01-05T11:47:51.457 回答
0

这是正确的方法 (我通过检查 django admin 找到了这个方法)

var textAreaEl = document.getElementById("id_html_txt")
var textAreadData = textAreaEl.dataset.config

var textEditor = CKEDITOR.replace(textAreaEl, textAreadData);
textEditor.insertHtml(textAreaEl)
  • 以上配置适用于模态形式,但也适用于普通形式
于 2019-05-19T17:37:15.363 回答
0

问题可能包括:

<script src="{{ asset('js/app.js') }}" defer></script>

尝试删除它。这可以解决你的问题

于 2018-11-13T01:56:46.910 回答
0

对于香草js

<script src="/vendor/unisharp/laravel-ckeditor/ckeditor.js"></script>
<script>
   if(document.getElementsByTagName('textarea').length > 0){
      CKEDITOR.replace( 'article-ckeditor' ); 
   }
</script>
于 2020-03-27T15:37:52.553 回答