将选定的TinyMCE编辑器内容复制到剪贴板

问题描述 投票:1回答:4

这里的Jsfiddle例子:

http://jsfiddle.net/w0ap9Lun/1/

我的目标是选择TinyMCE textarea的所有内容并将其复制到剪贴板(相当于突出显示所有内容并按ctrl + c)。

我可以使用正常输入执行此操作,如下所示:

$('.copyToclip').on('click', function() {
    //select the input
    $(this).siblings('input').select();
    //fire the copy command
    document.execCommand("copy");
    $(this).text('copied');
});

以下代码选择编辑器中的所有内容,但是当我调用'execCommand(“copy”)时,它不会被复制到剪贴板,这是我的代码:

$('.copyTinyMCEToclip').on('click', function() {
    //select the content of the active tinyMCE instance 
    tinyMCE.activeEditor.selection.select(tinyMCE.activeEditor.getBody());
    document.execCommand("copy");
    $(this).text('copied');
});

任何帮助将不胜感激。

jquery html tinymce
4个回答
0
投票

你可以使用tinyMCE方法,试试这个:

jQuery(function(){
    jQuery('.copyTinyMCEToclip').click(function(){
      var selectedText = tinyMCE.activeEditor.selection.getContent();
      jQuery('input').attr('value', selectedText);
    });
});

示例:http://jsfiddle.net/w0ap9Lun/2/

参考:http://archive.tinymce.com/wiki.php/API3:method.tinymce.dom.Selection.getContent


0
投票

试试这个:

将文本复制到剪贴板的功能:

function copyToClipboard(text) {
if (window.clipboardData && window.clipboardData.setData) {
    // IE specific code path to prevent textarea being shown while dialog is visible.
    return clipboardData.setData("Text", text); 

} else if (document.queryCommandSupported && document.queryCommandSupported("copy")) {
    var textarea = document.createElement("textarea");
    textarea.textContent = text;
    textarea.style.position = "fixed";  // Prevent scrolling to bottom of page in MS Edge.
    document.body.appendChild(textarea);
    textarea.select();
    try {
        return document.execCommand("copy");  // Security exception may be thrown by some browsers.
    } catch (ex) {
        console.warn("Copy to clipboard failed.", ex);
        return false;
    } finally {
        document.body.removeChild(textarea);
    }
}}

分配值来控制:

  $('.copyTinyMCEToclip').on('click', function() {
    var text = tinyMCE.activeEditor.getContent().replace(/<\/?[^>]+(>|$)/g, "")
    copyToClipboard(text);
    jQuery('input').attr('value', text);});

0
投票

我通过改进搜索查询找到了解决方案。问题是更广泛地将HTML添加到剪贴板,我在这里找到答案:

Javascript - Copy string to clipboard as text/html


0
投票

让jquery点击tinymce菜单图标。唯一不足的是它让编辑器选择了所有内容。

$(".mce-i-selectall").click();
$(".mce-i-copy").click();
© www.soinside.com 2019 - 2024. All rights reserved.