ckeditor - CKEditor ShowProtected 移动车把代码
问题描述
如果您将 CKEditor 与车把代码一起使用,您可以使用以下方式将车把代码标记为受保护
config.protectedSource.push(/{{[/|#][\s\S]*?}}/g);
这很好用,但在主 WYSIWYG 编辑器中隐藏了车把代码。
每当有把手代码时,showprotected 插件 ( https://ckeditor.com/cke4/addon/showprotected ) 可用于显示图标。
但是,如果你有类似的代码
<ul>
{{#each Books}}
<li>{{Title}}</li>
{{/each}}
</ul>
CKEditor 将 HTML 更改为:
{{#each Books}}{{/each}}
<ul>
<li>{{Title}}</li>
</ul>
我已经设定
config.allowedContent = true;
但这无济于事。有任何想法吗?
解决方案
问题在于CKEditor DTD,它控制如何允许嵌套 HTML 元素。
当 CKEditor 以 WYSIWYG 模式显示时,showprotected插件会显示一个小图标,而不是把手代码。这有效地创建了以下 html:
<ul>
<img class='cke_protected'..../>
<li>{{Title}}</li>
<img class='cke_protected'..../>
</ul>
图像不允许直接放置在 UL 标签内,因此 CKEditor 将其重新排列为
<img class='cke_protected'..../><img class='cke_protected'..../>
<ul>
<li>{{Title}}</li>
</ul>
您可以通过告诉 DTD UL 标签内允许使用图像标签来解决此问题
CKEDITOR.dtd['ul']['img'] = true;
推荐阅读
- salesforce - 我想将商机订单项从父商机复制到子商机
- javascript - 在表单中放置表单不起作用
- python - 如何在python中打印偶数键值对
- android - Crashlytics 错误:E/FirebaseCrashlytics:获取设置时出错。与 Firebase 服务器 API 通信需要有效的 Firebase 项目 ID
- python - 构建具有基本事实的非图像分类器
- python - 如何在python中使用request和beautifulsoup在网页中搜索多个预定义字符串
- javascript - Laravel DatePicker 一直推送上个月而不是选择的月份?
- node.js - Twilio 循环赛
- android - Unity IAP:亚马逊不支持购买
- php - Socket.io 向特定用户发送消息