我正在尝试从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>
答案 0 :(得分:1)
请检查此顺序是否适合您:
editor.focus();
editor.once( 'selectionChange', function() {
editor.execCommand( 'copy' );
} );
editor.execCommand( 'selectAll' );
或者:
editor.execCommand( 'selectAll' );
setTimeout( function() {
editor.execCommand( 'copy' );
}, 0 );
请注意,只能在IE中访问剪贴板。这是一个浏览器限制的问题,没有办法绕过那个东西。