用javascript復制富文本


由於項目需求,希望能夠用javascript復制富文本格式的數據,例如全選一個網頁Ctrl+C, Ctrl+V到一個word文檔中,數據還是原來的格式,顯示出來的樣子也都和原來一樣。現在希望使用javascript實現同樣的功能。

由於系統的限制,javascript往系統剪切板上放置的數據只有兩種格式Text和URL。具體使用如下:

function CopyToClipBoard(){     
    var clipBoardContent="abcdefg";     
    window.clipboardData.setData("Text",clipBoardContent);     
    alert("已復制本頁鏈接,您可以使用Ctrl+V粘貼后,發送給好友!");     
}    

上述方式只能存放普通的文本,無法保留原來的顏色字體大小等格式。

 

想要復制指定對象,首先需要定位到目標對象,所幸javascript中可以根據元素的id字段進行定位,可以輕易獲取組成它的html文本,但是如果把這些html數據直接放入剪切板中,用Ctrl+V進行粘貼,我們得到的也只是沒有解析的html,不能展現有效數據。

在搜索了大量資料之后終於發現了一個好的方法,通過創建ControlRange,然后執行execCommand('Copy')命令將制定元素塊放到剪切板中, 此方法僅支持IE瀏覽器

<script>
function CopyImageToBoard(area){
if (typeof area.contentEditable == 'undefined' || !document.body.createControlRange){ alert('Your IE does not support copy action, please use ctrl + c instead! ”'); }else{ var ctr = document.body.createControlRange(); area.contentEditable = true; ctr.addElement(area); ctr.execCommand('Copy'); area.contentEditable = false; alert('Copy success! '); } }
</script>
<html>
<div id ="all">
<a href="javascript:void(0)"   onClick="CopyImageToBoard(document.getElementById('all'))" >copy to clipboard</a>
<table id="text">
  <tr style="background:red">
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
 <tr style="background:green">
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
 <tr style="background:black">
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
</div>
</html>

點擊鏈接按鈕之后會復制整個區域到系統剪切板,把數據粘貼到支持富文本格式的編輯器中如word等,就可以看到效果了。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM