CKEditor 5是一组随时可用的富文本编辑器,使用强大的框架创建,使您能够创建任何类型的文本编辑解决方案,并在其中包含实时协作编辑。将此标记用于任何与CKEditor 5相关的问题。有关CKEditor 4的问题,请使用“ckeditor4.x”标签。
CKEditor 5 链接弹出窗口未在 Bootstrap 4 Modal 中显示
我在其中设计了一些 Bootstrap 4 Modal,并在其中实现了 CKEditor 5。我的问题是当我尝试打开链接时,链接弹出窗口不显示。 我在谷歌中搜索发现了一些修复,但仍然......
谢谢。 我使用在线构建器下载了 ckeditor5 自定义构建。 与php应用程序集成并在视图页面中编写脚本, 在上传的图像上,我得到的源为 谢谢。 我使用在线构建器下载了 ckeditor5 自定义构建。 与php应用程序集成并在视图页面中编写脚本, 在上传的图像上,我得到的源为 <figure><img src:"uploaded path"></figure> 它工作正常,但我想改变的是 <div class="outerDiv"><div class:"InnerDiv"><img src:"uploaded path"></div></div> 你能帮忙吗? 即使我面临同样的问题,一旦我能够更改代码的结构,加载器就不会消失。 我认为 ckeditor5 这里有一些错误。任何帮助将不胜感激。 提前致谢!
如何在python django中使用ckeditor5 cdn中的代码块插件?
这不行…… 我找不到解决方案。 我使用了tag,所以应用了cdn。我想在 ckeditor 中进行代码块扩展 <p>这不能用... 我找不到解决方案。 我使用了tag,所以应用了cdn。我想在 ckeditor 中进行代码块扩展</p> <p></p><div data-babel="false" data-lang="js" data-hide="false" data-console="true"> <div> <pre><code><head> <script src="https://cdn.ckeditor.com/ckeditor5/29.1.0/classic/ckeditor.js"></script> </head> <body> strong text<textarea id="editor" name="queseditor"></textarea> <script> ClassicEditor .create( document.querySelector('#editor'), { codeBlock: { languages: [ { language: 'python', label: 'Python' } ] } } ) .catch( error => { console.error( error ); } ); </script> </body></code></pre> </div> </div> <p></p> </question> <answer tick="false" vote="0"> <p>您的代码片段有标签错误。</p> <p>这是解决您的问题的固定片段(您忘记关闭脚本标签):</p> <p></p><div data-babel="false" data-lang="js" data-hide="false" data-console="true"> <div> <pre><code><head> <script src="https://cdn.ckeditor.com/ckeditor5/29.1.0/classic/ckeditor.js"></script> </head> <body> strong text<textarea id="editor" name="queseditor"></textarea> <script> ClassicEditor .create( document.querySelector('#editor'), { codeBlock: { languages: [ { language: 'python', label: 'Python' } ] } } ) .catch( error => { console.error( error ); } ); </script> </body></code></pre> </div> </div> <p></p> </answer> <answer tick="false" vote="0"> <p>codeblock 插件仅在 ckeditor5 的超级版本中可用。</p> <pre><code><script src="https://cdn.ckeditor.com/ckeditor5/41.1.0/super-build/ckeditor.js"></script> </code></pre> <p>这里是对此的参考:<a href="https://ckeditor.com/docs/ckeditor5/latest/installation/getting-started/predefined-builds.html#superbuild" rel="nofollow noreferrer">https://ckeditor.com/docs/ckeditor5/latest/installation/getting-started/predefined-builds.html#superbuild</a></p> </answer> </body></html>
如何解决“CKEditor 错误:“无法将 null 转换为对象””错误
我已经通过npm安装了ckeditor5; npm install --save @ckeditor/ckeditor5-build-classic 之后,我按照手册中的说明添加了编辑器。通过以下命令: 导入
我正在尝试为 CKEditor 5 创建 webpack 配置。我正在尝试创建自定义构建。 这是我的 webpack.mix.js const mix = require('laravel-mix'); require('laravel-mix-purgecss'); const { 样式...
在我的nextjs项目中哪里放置ckeditor5自定义构建?(AppRouter-SRC目录)
大家好,我想为我的 nextjs 项目提供一个所见即所得的编辑器。经过一番研究后,我决定在我的项目中使用 ckeditor5。我将 next14 与 typescript 和 src 目录一起使用。 我赢了...
无法使用vue js向ckeditor 5添加自定义图像上传适配器插件
我正在尝试使用 Vue js / Inertia / Vite Js / Laravel 为 ckrditor5 制作自定义图像上传插件, 我阅读了文档并使其与指南完全相同,但我在 co...
我想在我的 vue 应用程序中实现自定义 CKEditor5,但收到编译失败错误。 我使用 ckeditor 在线工具创建了自定义构建。之后我将文件放入...
Angular esbuild ckeditor。没有为“.svg”配置加载器
我使用ckEditor。如果我导入 ckEditor 插件,我会收到此错误 没有为“.svg”文件配置加载程序:node_modules/@ckeditor/ckeditor5-core/theme/icons/table.svg 角度版本:17....
CKEditor 5 插件:带有输入、textara 和复选框的弹出窗口
我已经创建了一个 CKEditor 4 插件(在 TYPO3 CMS 中),编辑者可以使用它向 A 标签添加数据属性。 我现在想将此插件迁移到版本 5,看起来几乎
我的 ejs 模板中有以下内容: // 经典编辑器 </desc> <question vote="0"> <p>我的 ejs 模板中有以下内容:</p> <pre><code><script src="https://cdn.ckeditor.com/ckeditor5/41.0.0/classic/ckeditor.js"></script> <script> // Classic Editor ClassicEditor .create( document.querySelector( '#editor' ), { ckfinder: { uploadUrl: '/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Files&responseType=json' } } ) .catch( error => { console.error( error ); } ); </script> </code></pre> <p>HTML 元素如下所示:</p> <pre><code><div class="mb-3"> <label for="content" class="form-label">Content</label> <textarea class="form-control" id="editor" rows="4" cols="50" name="content" value="<% if(editMode) { %><%= event.content %><%}%>"></textarea> </div> </code></pre> <p>当我查看表单时,我可以看到并使用 CKEditor。</p> <p>但是,当我在编辑模式下加载表单时,CKEditor 也会在前端渲染 HTML 标签。</p> <p>数据库中保存的内容如下:</p> <p><a href="https://i.stack.imgur.com/wJ79H.png" target="_blank"><img src="https://cdn.txt58.com/i/AWkuc3RhY2suaW1ndXIuY29tL3dKNzlILnBuZw==" alt=""/></a></p> <p>见附图</p> <p>如何在不显示HTML的情况下正确显示内容? 例如,如果文本为粗体,则它应该以粗体显示,而不是强标签本身。</p> <p><a href="https://i.stack.imgur.com/OuelR.png" target="_blank"><img src="https://cdn.txt58.com/i/AWkuc3RhY2suaW1ndXIuY29tL091ZWxSLnBuZw==" alt=""/></a></p> </question> <answer tick="false" vote="0"> <p>这一切都是 HTML 问题。</p> <p>文本区域定义不正确。相反,它应该看起来像这样:</p> <pre><code><textarea class="form-control" id="editor" rows="4" cols="50" name="content"> <% if(editMode) { %><%- event.content %><%}%> </textarea> </code></pre> </answer> </body></html>
如何从 CKEditor-->uploads()-->_initRequest() 传递 <div> 元素(以获取其 id)?
我在视图中有 2 个 CKEditor 字段 ()。 @Html.Raw(@Model.Description_1) @Html.Raw(@Model.Description... 我在视图中有 2 个 CKEditor 字段 ()。 <div id="editor_1"> @Html.Raw(@Model.Description_1) </div> <div id="editor_2"> @Html.Raw(@Model.Description_2) </div> 有一段代码将上传的图像传输到控制器: <script> class MyUploadAdapter { upload() { return this.loader.file .then( file => new Promise( ( resolve, reject ) => { this._initRequest(); this._initListeners( resolve, reject, file ); this._sendRequest( file ); } ) ); } _initRequest() { const xhr = this.xhr = new XMLHttpRequest(); } } </script> 如何在 _initRequest() 中传递元素的链接并了解用户将图像上传到哪个字段(我需要获取字段 id)?我试图在接收上传图像的控制器(在 Request 类中)中找出答案,但我做不到。 foreach(Request.Form.Files 中的 IFormFile 照片) 谢谢! 您可以创建自定义上传适配器,将文件作为请求的一部分发送到后端。创建适配器实例时,可以通过editor.sourceElement.getAttribute('id')获取当前元素的id。 然后,新建一个XMLHttpRequest,并将元素id添加到请求头中,最后通过HTTP请求头发送到后端。 后端通过一个方法从请求头中获取对应的id。 以下是您可以用作参考的示例: @model Mymodel <div class="tab-panels"> <div id="editor_1"></div> @Html.Raw(Model?.Description_1) <div id="editor_2"></div> @Html.Raw(Model?.Description_2) </div> <script src=https://cdn.ckeditor.com/ckeditor5/41.0.0/classic/ckeditor.js></script> <script> class MyUploadAdapter { constructor(loader, fieldId) { this.loader = loader; this.url = '/Upload/DocUploadImage'; this.fieldId = fieldId; } // Starts the upload process. upload() { return this.loader.file .then(file => new Promise((resolve, reject) => { this._initRequest(); this._initListeners(resolve, reject, file); this._sendRequest(file); })); } // Aborts the upload process. abort() { if (this.xhr) { this.xhr.abort(); } } _initRequest() { const xhr = this.xhr = new XMLHttpRequest(); xhr.open('POST', this.url, true); xhr.setRequestHeader('X-FieldId', this.fieldId); xhr.responseType = 'json'; } _initListeners(resolve, reject, file) { const xhr = this.xhr; const loader = this.loader; const genericErrorText = `Couldn't upload file: ${file.name}.`; xhr.addEventListener('error', () => reject(genericErrorText)); xhr.addEventListener('abort', () => reject()); xhr.addEventListener('load', () => { const response = xhr.response; if (!response || response.error) { return reject(response && response.error ? response.error.message : genericErrorText); } resolve({ default: response.url }); }); if (xhr.upload) { xhr.upload.addEventListener('progress', evt => { if (evt.lengthComputable) { loader.uploadTotal = evt.total; loader.uploaded = evt.loaded; } }); } } // Prepares the data and sends the request. _sendRequest(file) { const data = new FormData(); data.append('upload', file); this.xhr.send(data); } } function MyCustomUploadAdapterPlugin(editor) { editor.plugins.get('FileRepository').createUploadAdapter = (loader) => { const fieldId = editor.sourceElement.getAttribute('id'); return new MyUploadAdapter(loader, fieldId); }; } ClassicEditor.create(document.querySelector('#editor_1'), { extraPlugins: [MyCustomUploadAdapterPlugin] }) .catch(error => { console.error(error); }); ClassicEditor.create(document.querySelector('#editor_2'), { extraPlugins: [MyCustomUploadAdapterPlugin] }) .catch(error => { console.error(error); }); </script> 接受方式: public async Task<JsonResult> DocUploadImage() { var fieldId = HttpContext.Request.Headers["X-FieldId"].ToString(); return Json("OK"); } 当我发送图像时: 我可以在请求头中获取对应的元素id:
错误:找不到模块“@ckeditor/ckeditor5-build-classic”角度9的声明文件
我想在 Angular 9 中使用 ckeditor,我按照 https://ckeditor.com/docs/ckeditor5/latest/builds/guides/integration/frameworks/angular.html 中的说明进行操作 但它在我导入“@
我正在使用ckeditor5,我试图将编辑器默认设置为粗体和居中。 当用户开始书写时,文本将加粗并居中。 我看到有人问类似的问题,但没有一个...
我正在使用ckeditor5,我试图将编辑器默认设置为粗体和居中。 当用户开始书写时,文本将加粗并居中。 我看到有人问类似的问题,但没有一个...
我知道如何使用 CKEditor5 API 获取数据,正如文档和另一篇 SO 帖子中提到的那样。 但是,我怎样才能得到纯文本呢?我尝试跟随但它什么也没返回。 警报($(
使用 CKEditor,如何替换图像上传适配器错误“警报”并使用自定义处理程序来通知用户
根据CK Editor的说法,自定义上传适配器的实现仅支持两种生命周期方法:上传和中止。似乎没有任何方法可以拦截编辑器来自定义句柄
如何防止CKEditor删除<html>、<head>和<body>标签
我的问题与另一篇文章中描述的问题基本相同,只是它涉及 CKeditor 4 而我实际上正在处理该模块的版本 5。 简而言之:如果我尝试...
我们使用 ckediter 5 和 wiris mathtype 模块,在输入小数值时出现问题。就像 32/3 转换为 3⅔ 一样。 ck 编辑器角度版本:“@ckeditor/ckeditor5-angular”:&...
在 CKEditor5 实例上的 chrome 扩展中,如何在插入内容之前删除插入符号位置的最后 x 个字符
我正在开发一个 chrome 扩展,它用扩展文本替换缩写。我正在处理 CKEditor5 的一个具体案例。 由于CKEditor实例仅在后台执行时可用...