我想在输出 GitHub 风格的 markdown 时使用 CKEditor 中的表格。要将表格输出为纯 Markdown,必须至少有一个标题行。添加新表时,通过此设置很容易实现:
table: {
defaultHeadings: {
rows: 1,
columns: 0
}
}
问题出在粘贴现有表格(例如从 Word 或其他地方粘贴)时。如果没有标题行,则不会添加它。我正在尝试为此制作一个自定义插件,但作为初学者,我没有成功这样做。我应该如何编写插件代码才能使其工作?
我最终解决了这个问题,不是通过创建插件,而是在提交表单之前修改编辑器内容:
$('form').submit(function(event) {
event.preventDefault();
let content = watchdog.editor.getData().replace(/<tbody>(.+?)<\/tbody>/g, "$1");
let headers = content.match(/(?<=<table><tr>)(<td>(.+?)<\/td>)+/g);
$.each(headers, function(index, item) {
content = content.replace(/(?<=<table><tr>)(<td>(.+?)<\/td>)+/, item.replace(/<td>(.+?)<\/td>/g, "<th>$1</th>"));
});
watchdog.editor.setData(content);
$(this).unbind('submit').submit();
});
表格修改并更新编辑器内容后,成功转换为GFM,表单继续提交。