@ckeditor/ckeditor5-clipboard不提供复制、剪切和粘贴按钮。没错,主要原因是Ctrl+C/V/X广为人知。但还有其他原因——这些按钮在工具栏中占据了宝贵的空间,而且......无论如何你都无法使用这样的按钮进行粘贴。
例如,查看 CKEditor 4 将执行的操作,如果您将触发粘贴的按钮操作(您实际上可以看到工具栏中也没有这样的按钮;我必须从控制台触发它):

这是因为出于安全原因,对剪贴板的访问受到限制。您可以以编程方式复制/剪切内容(将内容放入剪贴板),但不能粘贴。否则,每个网站都可以读取您复制的数据。不好玩。
无论如何,复制/剪切是可行的。当用户按下粘贴按钮时,您可以显示一些警报。如果你想要,那么你需要实现一个简单的插件:
import ClassicEditor from '@ckeditor/ckeditor5-editor-classic/src/classiceditor';
import Essentials from '@ckeditor/ckeditor5-essentials/src/essentials';
import Paragraph from '@ckeditor/ckeditor5-paragraph/src/paragraph';
import ButtonView from '@ckeditor/ckeditor5-ui/src/button/buttonview';
function ClipboardButtons( editor ) {
addButton( 'copy', 'Copy' );
addButton( 'cut', 'Cut' );
addButton( 'paste', 'Paste' );
function addButton( action, label ) {
editor.ui.componentFactory.add( action, locale => {
const view = new ButtonView( locale );
view.set( {
label: label,
// Or use the 'icon' property.
withText: true,
tooltip: true
} );
view.on( 'execute', () => {
if ( action === 'paste' ) {
alert( 'Sorry man, no can do!' );
} else {
document.execCommand( action );
}
} );
return view;
} );
}
}
ClassicEditor
.create( document.querySelector( '#editor' ), {
plugins: [ Essentials, Paragraph, ClipboardButtons ],
toolbar: [
'copy', 'cut', 'paste'
]
} )
.then( editor => {
} )
.catch( err => {
console.error( err.stack );
} );
您可以在 CKEditor 5 框架的快速入门指南中阅读有关实现插件的更多信息。
你应该实现这样的目标:
