2017-01-17 110 views
1

的jsfiddle例如這裏:複製TinyMCE的編輯器的選擇的內容複製到剪貼板

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(‘複製’),」它不會被複制到剪貼板,這裏是我的代碼:

$('.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'); 
}); 

任何幫助將不勝感激。

回答

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

您好感謝您抽出時間來回答我的問題。不幸的是,我並沒有試圖複製DOM中的內容,而是將其移動到用戶剪貼板,以便將其粘貼到其他位置。我可以「獲取」內容,但我無法將其分配到剪貼板。 –

+0

抱歉:)我誤解了! – mariobros

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

謝謝,這真的很不錯,並且是我需要的一步。我已經刪除了正則表達式,因爲我想要標記持久化。 我在這個實現中遇到的問題是我放鬆了TinyMCE的聰明格式。我想要做的是創建一個樣式表,並將其粘貼到電子郵件中。用你的解決方案,我得到原始的html,但是Outlook只是呈現代碼,而不是元素。 –

+0

我不知道我是否理解得很好。你想複製到Outlook代碼那樣「

​​測試
」之後,看到「呈現表」? –