CKEditor4剪贴板问题

时间:2014-04-28 14:21:09

标签: ckeditor clipboard

我正在尝试从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 个答案:

答案 0 :(得分:1)

请检查此顺序是否适合您:

editor.focus();
editor.once( 'selectionChange', function() {
    editor.execCommand( 'copy' );
} );
editor.execCommand( 'selectAll' );

或者:

editor.execCommand( 'selectAll' );
setTimeout( function() {
    editor.execCommand( 'copy' );
}, 0 );

请注意,只能在IE中访问剪贴板。这是一个浏览器限制的问题,没有办法绕过那个东西。