")-6ren"> ")-var currentDialog = CKEDITOR.dialog.getCurrent(); currentDialog._.editor.insertHtml(""); 抛出错误,TypeEr-6ren">
gpt4 book ai didi

ckeditor 如何允许 .insertHtml ("")

转载 作者:行者123 更新时间:2023-12-02 19:18:07 25 4
gpt4 key购买 nike

var currentDialog = CKEDITOR.dialog.getCurrent();
currentDialog._.editor.insertHtml("<customTag myAttr='var'></customTag>");

抛出错误,TypeError: Cannot read property 'isBlock' of undefined

如果我尝试.insertHtml("<span>hello</span>")它工作得很好。

如何更改 ckeditor 以允许我通过 .insertHtml() 指定我自己的自定义 html 标签?我很乐意将其更改为类似 <span class='custom'...或类似的东西,但我必须处理遗留的 CMS 文章。使用最新的ckeditor。谢谢。

最佳答案

  1. 您需要修改 CKEDITOR.dtd 对象,以便编辑器知道此标记并正确解析 HTML 和处理 DOM:

    CKEDITOR.dtd.customtag = { em:1 };        // List of tag names it can contain.
    CKEDITOR.dtd.$block.customtag = 1; // Choose $block or $inline.
    CKEDITOR.dtd.body.customtag = 1; // Body may contain customtag.
  2. 您需要在 Advanced Content Filter 中允许此标签及其样式/属性/类:

    editor.filter.allow( 'customtag[myattr]', 'myfeature' );

不幸的是,由于某些缓存的原因,在某些情况下,您无法在加载 CKEditor 后修改 DTD 对象 - 您需要在创建它时对其进行修改。所以要做到这一点:

  1. 克隆 CKEditor repositoryCKEditor presets repository .

  2. 修改core/dtd.js代码。

  3. 按照 README.md 中的说明构建缩小包 - 唯一的要求是 Java(抱歉 - Google Closure Compiler:P)和 Bash。

PS。插入未知元素时不应抛出该错误,因此我报告了 http://dev.ckeditor.com/ticket/10339并解决这个不便http://dev.ckeditor.com/ticket/10340 .

关于ckeditor 如何允许 .insertHtml ("<customTag myAttr=' 值 '"></customTag>"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16066556/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com