javascript - 强制 CKEDITOR 停止展开 block

标签 javascript jquery html ckeditor

假设我有一个 block 标记:

<div class="block">
    <a href="/">
        <div class="divInside"></div>
        <img src="/bla" />
        <p>Parargraph</p>
    </a>
</div>

<强> HTML5 :声明<a>元素“可以包裹整个段落、列表、表格等,甚至整个部分,只要其中没有交互式内容(例如按钮或其他链接)”。

那么我这里的内容是完全有效的,不是吗?为什么 ckeditor 不断重新格式化我的源代码,例如上面的内容,一旦我在富编辑器和源代码模式之间进行更改,就会执行以下操作:

<div class="block">
    <div class="divInside">
        &nbsp;
    </div>
    <a href="/"><img src="/bla" /> </a>
    <p>
        <a href="/">Parargraph</a>
    </p>
    <a href="/"> </a>
</div>

我对它对空 div 的作用没有任何问题,但对 anchor 的作用却非常烦人。

有办法禁用此功能吗?

最佳答案

对于 future 遇到同样问题的人,我确实提出了一个解决方案,但我对此并不太满意,因为应该有一个选项,因为它完全有效<强> HTML5

在您的 config.js 中文件中,添加以下配置设置:

config.protectedSource.push(/[\r|\n]|(<a([^*>]+>)|<\/a>)/g);

这是正则表达式工作的演示: DEMO

基本上我们在这里所做的就是:

  1. 查找新行 \r
  2. 查找新行 \n
  3. 找到任何开放 anchor :<a接下来是文本,直到我们到达 > -(<a([^*>]+>)
  4. 查找结束 anchor 标记 <\/a>

这个正则表达式将停止验证找到的结果,我确信有更好的方法来做到这一点,因为我不是 regexPERT(<-- 但擅长双关语!)

希望这有帮助

关于javascript - 强制 CKEDITOR 停止展开 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24523658/

相关文章:

javascript - 如何检查 Cloud Functions for Firebase 中是否有某个实例正在运行某个代码块?

javascript - websockets的缺点

javascript - jQuery 中的 this 和 $(this) 有什么区别?

html - 解析包含 html 数据的 JSON

javascript - 从以特定单词开始直到结束的字符串中提取单词

javascript - 更改图像后如何在 Canvas 上添加下载链接?

javascript - 使用 enzyme 进行单元测试

javascript - 如何从一系列数组中搜索输入标签值

javascript - 3 个垂直对齐的 div 之间的 ScrollTop 从 MID 到 BOT 不起作用,从 BOT 到 MID 出现故障

javascript - 如何从youtube视频中删除广告