CKEDITOR - 未捕获的错误:元素不支持指定的元素模式:“元”

Posted

技术标签:

【中文标题】CKEDITOR - 未捕获的错误:元素不支持指定的元素模式:“元”【英文标题】:CKEDITOR - Uncaught Error: The specified element mode is not supported on element: "meta" 【发布时间】:2016-02-22 17:53:25 【问题描述】:

当我尝试在同一页面中使用 2 个编辑器时出现此错误...

我使用 php 从数据库加载内容。如果设置了 $_POST,我会从特定的 $_POST 值加载内容。

该代码仅适用于 1 个 textarea-ckeditor,当我使用 2 个不同的编辑器时出现此错误:未捕获错误:元素:“元”不支持指定的元素模式。

<div class="form_group col-md-12 col-sm-12 col-xs-12">

           <label class="formlabel">Body</label><br>

                <?php if(isset($_POST['body'])) ?> 

                <textarea class="ckeditor" name="body"> <?php echo $_POST['body']; ?> </textarea>

                <script>
                    CKEDITOR.replace( 'body' ,
                    filebrowserBrowseUrl : '../ResposiveFilemanager/filemanager/dialog.php?type=2&editor=ckeditor&fldr=',
                    filebrowserUploadUrl : '../ResposiveFilemanager/filemanager/dialog.php?type=2&editor=ckeditor&fldr=',
                    filebrowserImageBrowseUrl : '../ResposiveFilemanager/filemanager/dialog.php?type=1&editor=ckeditor&fldr='
                    );
                </script>

                <?php  else  ?>

                 <textarea class="ckeditor" id="ckeditorb" name="body" value="<?php echo nl2br(htmlspecialchars($art['BODY']));?>" ></textarea>

                <?php $body_content=json_encode(utf8_encode($art['BODY'])); ?>

                <script>
                    CKEDITOR.replace( 'body' ,
                    filebrowserBrowseUrl : '../ResposiveFilemanager/filemanager/dialog.php?type=2&editor=ckeditor&fldr=',
                    filebrowserUploadUrl : '../ResposiveFilemanager/filemanager/dialog.php?type=2&editor=ckeditor&fldr=',
                    filebrowserImageBrowseUrl : '../ResposiveFilemanager/filemanager/dialog.php?type=1&editor=ckeditor&fldr='
                    );
                    CKEDITOR.instances.ckeditorb.setData(<?php echo $body_content; ?>, function()
                        this.checkDirty(); // true
                    );
                </script>

                <?php  ?>

            <?php if(isset($error['body']) && !empty($error['body'])) 
                echo $error['body'];
               ?>
        </div>



        <div class="form_group col-md-12 col-sm-12 col-xs-12">

           <label class="formlabel">Description</label><br>

                <?php if(isset($_POST['description'])) ?> 

                <textarea class="ckeditor" name="description" id="descripcion_1"> <?php echo $_POST['description']; ?> </textarea>

                <?php $content=json_encode(utf8_decode($_POST['DESCRIPTION'])); ?>

                <script>
                    CKEDITOR.replace( 'description' ,
                    filebrowserBrowseUrl : '../ResposiveFilemanager/filemanager/dialog.php?type=2&editor=ckeditor&fldr=',
                    filebrowserUploadUrl : '../ResposiveFilemanager/filemanager/dialog.php?type=2&editor=ckeditor&fldr=',
                    filebrowserImageBrowseUrl : '../ResposiveFilemanager/filemanager/dialog.php?type=1&editor=ckeditor&fldr='
                    );
                    CKEDITOR.instances.descripcion_1.setData(<?php echo $content; ?>, function()
                        this.checkDirty(); // true
                    );
                </script>

                <?php  else  ?>

                 <textarea class="ckeditor" id="descripcion_2" name="description" value="<?php echo $art['DESCRIPTION']; ?>" ></textarea>

                <?php $content=json_encode(utf8_decode($art['DESCRIPTION'])); ?>

                <script>
                    CKEDITOR.replace( 'description' ,
                    filebrowserBrowseUrl : '../ResposiveFilemanager/filemanager/dialog.php?type=2&editor=ckeditor&fldr=',
                    filebrowserUploadUrl : '../ResposiveFilemanager/filemanager/dialog.php?type=2&editor=ckeditor&fldr=',
                    filebrowserImageBrowseUrl : '../ResposiveFilemanager/filemanager/dialog.php?type=1&editor=ckeditor&fldr='
                    );
                    CKEDITOR.instances.descripcion_2.setData(<?php echo $content; ?>, function()
                        this.checkDirty(); // true
                    );
                </script>

                <?php  ?>

            <?php if(isset($error['description']) && !empty($error['description'])) 
                echo $error['description'];
               ?>
        </div>

【问题讨论】:

【参考方案1】:

我遇到了同样的问题。它与 textarea: description 的名称有关,因为有一个同名的元标记。一旦你更改了 textarea 的名称,它就会起作用。

【讨论】:

【参考方案2】:

ckeditor 插件会读取名称为 description 的标签。如果您有任何带有描述名称的元标记,请删除 ckeditor 将在您的带有描述名称的文本区域上工作的元标记。

【讨论】:

以上是关于CKEDITOR - 未捕获的错误:元素不支持指定的元素模式:“元”的主要内容,如果未能解决你的问题,请参考以下文章

未捕获的语法错误:在严格模式之外尚不支持块范围的声明(let、const、函数、类)[重复]

错误:变量“无法隐式捕获,因为未指定默认捕获模式”

未捕获的错误:模板解析错误:'mat-label' 不是已知元素:

未捕获的错误:没有为组件 MyApp 指定模板

未捕获的错误:元素类型无效

反应错误 - 未捕获的不变违规:元素类型无效