CKEditor4 Проблема с буфером обмена
Я пытаюсь выбрать весь контент из экземпляра CKEditor и скопировать его в буфер обмена, когда пользователь нажимает кнопку в другой части экрана. Когда страница первоначально загружается, и я нажимаю кнопку "Копировать в буфер обмена", команда selectAll работает, но команда копирования не работает. Однако, если я нажму кнопку второй раз, все будет работать правильно.
Кто-нибудь знает, как решить эту проблему? Я новичок в CKEditor, но это похоже на проблему фокуса или времени. Я бы предпочел не кодировать фантомные нажатия кнопок, чтобы это работало. Любая помощь с благодарностью.
Вот мой код Как вы можете видеть, я также пытался обернуть команду копирования в обратный вызов afterCommandExec из команды selectAll. Это тоже не сработало.
<html>
<head>
<script type="text/javascript" src="ckeditor/ckeditor.js"></script>
<script type="text/javascript">
var g_editorObj = new Object;
window.onload = function () {
g_editorObj = CKEDITOR.replace('editor1');
}
function doCopyClipBoard() {
try {
g_editorObj.focus();
g_editorObj.execCommand("selectAll");
g_editorObj.execCommand("copy");
//g_editorObj.on('afterCommandExec', handleCopy);
} catch (ex) {
alert(ex.Message);
}
}
function handleCopy() {
g_editorObj.execCommand("copy");
}
</script>
</head>
<body>
<input type="button" onclick="doCopyClipBoard()" value="Copy to Clipboard" /><br />
<textarea id="editor1" name="editor1" rows="10" cols="80">Testing this thing</textarea>
</body>
</html>
1 ответ
Пожалуйста, проверьте, будет ли этот порядок вещей работать на вас:
editor.focus();
editor.once( 'selectionChange', function() {
editor.execCommand( 'copy' );
} );
editor.execCommand( 'selectAll' );
или альтернативно:
editor.execCommand( 'selectAll' );
setTimeout( function() {
editor.execCommand( 'copy' );
}, 0 );
Обратите внимание, что доступ к буферу обмена возможен только в IE. Это вопрос ограничений браузера, и нет способа обойти это.