Contribute to this guide

指南只读支持

CKEditor 5 提供了一个开箱即用的只读模式。您可以使用它来阻止用户在某些情况下编辑您的内容。

# 演示

使用下面的按钮切换只读模式。一些功能(如导出或搜索)在只读模式下仍然可以使用。其他功能(如替换功能)将被禁用。

Click’n’go 产品线的第三季度销售数据

  收入 营业收入
Walker 3 $104,000 15%
婴儿车 $12,000 10%
跑步者 $97,500 15%

此演示展示了一组有限的功能。访问 功能丰富的编辑器示例 了解更多内容。

您可以看到,切换到只读模式后,一些工具栏项目仍然处于活动状态并可以正常使用。这是由于 affectsData 属性。对于大多数插件,默认情况下它被设置为 true,这使得它们在进入只读模式时处于非活动状态。但是,对于那些在模型中不进行任何更改(不影响内容)的插件,它被设置为 false,从而允许在用户写入权限有限的模式下继续使用它们。

# 其他功能信息

该功能不需要任何额外的插件,并且可以使用编辑器的 Editor#enableReadOnlyMode() 方法将编辑器设置为只读模式。

只读模式可能有多种应用。它可以用于实施基于用户的访问限制,其中选定的用户或一组用户只能出于评估目的访问内容,而不能更改它。

该功能还可以用于查看不应编辑的内容,例如财务报告、软件日志或转载的故事。虽然不可编辑,但此内容仍可供复制或屏幕阅读器访问。

编辑器可以通过许多功能在各种情况下切换到或退出只读模式。它支持专门的只读模式锁定机制。此解决方案即使在许多功能同时尝试打开或关闭只读模式时也能轻松控制只读模式,而不会相互冲突。它保证用户不会意外地使编辑器内容可编辑(这可能会导致错误)。

另请参阅 限制编辑功能,该功能允许您为具有有限编辑权限的用户组定义文档中哪些部分可编辑,并将其余内容对他们不可编辑。您还可以阅读关于写入受限编辑器模式的 专用博客文章

# 在只读模式下隐藏工具栏

某些用例可能需要在进入只读模式时隐藏编辑器工具栏。这可以通过以下代码轻松实现

ClassicEditor
    .create( document.querySelector( '#editor' ), {
        // The editor's configuration.
        // ...
    } )
    .then( editor => {
        const toolbarElement = editor.ui.view.toolbar.element;

        editor.on( 'change:isReadOnly', ( evt, propertyName, isReadOnly ) => {
            if ( isReadOnly ) {
                toolbarElement.style.display = 'none';
            } else {
                toolbarElement.style.display = 'flex';
            }
        } );
    } )
    .catch( error => {
        console.log( error );
    } );

当按钮被点击时,editor.enableReadOnlyMode() 会创建一个锁,在编辑器上设置只读模式。这会触发上面显示的代码,该代码又使用 CSS 样式隐藏工具栏。再次点击按钮后,会调用 editor.disableReadOnlyMode(),它会移除只读锁,编辑器和工具栏将再次可见。此方法适用于经典编辑器和解耦编辑器。

使用下面的演示查看此代码的实际操作。使用按钮切换只读模式。您将看到工具栏在只读模式下消失。

Click’n’go 产品线的第四季度销售数据

  收入 收入增长
Walker 3 $121,000 15%
婴儿车 $14,400 20%
跑步者 $100,000 0.5%

# 常用 API

编辑器提供以下 API 来管理只读模式

还有更多功能可以帮助控制 WYSIWYG 编辑器中的用户权限

  • 限制编辑 - 为具有有限编辑权限的用户定义文档的可编辑区域。
  • 仅评论模式 - 用户可以向内容的任何部分添加评论,而不是直接编辑它。

# 常用 API

编辑器提供以下 API 来管理只读模式

# 贡献

该功能的源代码可在 GitHub 上获得:https://github.com/ckeditor/ckeditor5/tree/master/packages/ckeditor5-core