【问题标题】:CKEditor setData() changes content but throws errorCKEditor setData() 更改内容但抛出错误
【发布时间】:2017-09-17 13:26:16
【问题描述】:

我在我的 JSP 页面中定义了以下文本区域:

<textarea id="edit_subtaskstep_notes" name="edit_subtaskstep_notes" rows="15" cols="50"></textarea>

在我的 js 文件中,我将内容数据设置为:

CKEDITOR.instances.edit_subtaskstep_notes.setData("Hello World");

这成功地将 ckeditor 文本框设置为在运行时包含“Hello World”,但在执行此行后,我的输出窗口中会抛出以下错误:

Uncaught TypeError: undefined is not a function (14:21:03:488 | error, javascript)
at (anonymous function) (:197:29)

如果我删除该行,错误就会消失,但不再设置数据。因为它“似乎”工作,因为数据正在设置,这是 CKEditor v4 的某种错误吗?下载自述文件只是说“CKEditor 4”,但链接版本(不会引发错误)说 4.4.7。

我已将代码简化为以下仍然重现错误的单个文件。包含的在线版本摆脱了错误消息。下载的版本会抛出错误。我没有以任何方式修改下载包。正如我之前所说,它仍然“有效”,我只是不喜欢错误消息:

<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">

    <script src="js/vendor/jquery-1.11.0.js"></script>
    <script src="/ckeditor/ckeditor.js"></script>
    <!--<script src="//cdn.ckeditor.com/4.4.7/basic/ckeditor.js"></script>-->
    <script>
        $(document).ready(function () {
            var editInstance = CKEDITOR.replace('editor1');
        });

        function onClickChangeText() {
            CKEDITOR.instances.editor1.setData("Hello World");
        }
    </script>
</head>

<body>
    <textarea name="editor1" rows="10" cols="45"></textarea><br/>
    <button onclick="onClickChangeText()">Change Text</button>
</body>

【问题讨论】:

  • CKEditor 的版本是多少?配置?加载的插件列表?重现问题的示例(即 JSFiddle)将是最好的。
  • 我进行了编辑以显示一个更简单的示例。我不能使用 JSFiddle,因为我认为问题出在他们的可下载包上,因为链接到在线版本消除了抛出的错误消息。

标签: javascript ckeditor


【解决方案1】:

查看 CKeditor 下载区域中的快速入门指南,它说将解压缩的包放在网站的根目录中。我曾尝试将它放在一个子目录中并从那里链接到它。我猜主 js 文件试图链接到它在内部基于根目录需要的其他资源,这将解释我遇到的部分功能。将其移至根目录后,错误消失了。

【讨论】:

  • 是的,但我没有做任何这些事情。它又开始向我抛出这个错误。如果我包含在线版本,它可以正常工作,但在使用他们的 Basic 下载包时仍然会出现该错误。我按照说明解压缩并放入根目录。我仍然一无所知,但既然它有效,我想我会忽略这个错误。
  • 所以也许它只是一个浏览器缓存?你清除了吗?
  • 我在每次尝试之间都认真地清除缓存。
  • 那么不幸的是我也一无所知。我需要看到它。重要的问题是代码中哪里引发了错误。您可以尝试未缩小的版本。
【解决方案2】:
<!DOCTYPE html>
<html lang="en">
<head>
    <title>CKEditor Sample</title>
    <script src="https://code.jquery.com/jquery-1.12.4.min.js" integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>
    <script src="https://cdn.ckeditor.com/4.7.3/standard/ckeditor.js"></script>
    <script>
    var editInstance;

    $(document).ready(function () {
        editInstance = CKEDITOR.replace('editor1');
    });

    function onClickChangeText() {
        editInstance.setData("Hello World");
    }
    </script>
</head>
<body>
    <textarea name="editor1" rows="10" cols="45"></textarea><br/>
    <button onclick="onClickChangeText()">Change Text</button>
</body>
</html>

使用上面的示例代码进行了尝试,在所有浏览器中对我来说都很好。在控制台中没有发现错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-26
    • 2012-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多