只读支持
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 来管理只读模式
isReadOnly
属性是一个只读的可观察属性,允许您检查isReadOnly
值并对它的更改做出反应。Editor#enableReadOnlyMode( featureId )
方法通过创建具有给定唯一 ID 的锁来打开编辑器的只读模式。Editor#disableReadOnlyMode( featureId )
方法从编辑器中移除只读锁。当编辑器上不再存在锁时,编辑器将变为可编辑。
# 相关功能
还有更多功能可以帮助控制 WYSIWYG 编辑器中的用户权限
# 常用 API
编辑器提供以下 API 来管理只读模式
isReadOnly
属性是一个只读的可观察属性,允许您检查isReadOnly
值并对它的更改做出反应。Editor#enableReadOnlyMode( featureId )
方法通过创建具有给定唯一 ID 的锁来打开编辑器的只读模式。Editor#disableReadOnlyMode( featureId )
方法从编辑器中移除只读锁。当编辑器上不再存在锁时,编辑器将变为可编辑。
# 贡献
该功能的源代码可在 GitHub 上获得:https://github.com/ckeditor/ckeditor5/tree/master/packages/ckeditor5-core。
我们每天都在努力使文档保持完整。您是否发现了过时的信息?是否有缺失的内容?请通过我们的 问题跟踪器 报告。
随着 42.0.0 版本的发布,我们重写了大部分文档以反映新的导入路径和功能。我们感谢您的反馈,帮助我们确保文档的准确性和完整性。