用Javascriptselect一个完整的表格(复制到剪贴板)

我想知道是否有人知道如何select使用JS完整的表,以便用户可以右键单击select,将其复制到剪贴板,然后粘贴到Excel。 如果您手动select表格,该过程完美地工作。 但是有时候,如果桌子的高度比屏幕大几倍,select拖动鼠标就会变得很乏味。 所以,我想给用户点击“select整个桌面”button的可能性,一切准备好被复制。

有任何想法吗?

是。 这不是太棘手,以下将适用于所有主stream浏览器(包括IE 6,甚至5):

(在Jukka Korpela的评论中指出以前的版本在IE 9标准模式下不工作后,于2012年9月7日更新)

演示: http : //jsfiddle.net/timdown/hGkGp/749/

码:

<script type="text/javascript"> function selectElementContents(el) { var body = document.body, range, sel; if (document.createRange && window.getSelection) { range = document.createRange(); sel = window.getSelection(); sel.removeAllRanges(); try { range.selectNodeContents(el); sel.addRange(range); } catch (e) { range.selectNode(el); sel.addRange(range); } } else if (body.createTextRange) { range = body.createTextRange(); range.moveToElementText(el); range.select(); } } </script> <table id="tableId"> <thead> <tr><th>Heading</th><th>Heading</th></tr> </thead> <tbody> <tr><td>cell</td><td>cell</td></tr> </tbody> </table> <input type="button" value="select table" onclick="selectElementContents( document.getElementById('tableId') );"> 

我最终通过使用下面的脚本得到它在IE9中工作

注意:它不适用于HTML表格。 它必须是一个DIV。 所以只需在桌面上放置一个包装DIV就可以了!

首先,我改变了HTMLbutton代码:

 <input type="button" value="Mark table" onclick="SelectContent('table1');"> 

然后将JavaScript更改为:

 function SelectContent (el) { var elemToSelect = document.getElementById (el); if (window.getSelection) { // all browsers, except IE before version 9 var selection = window.getSelection (); var rangeToSelect = document.createRange (); rangeToSelect.selectNodeContents (elemToSelect); selection.removeAllRanges (); selection.addRange (rangeToSelect); } else // Internet Explorer before version 9 if (document.body.createTextRange) { // Internet Explorer var rangeToSelect = document.body.createTextRange (); rangeToSelect.moveToElementText (elemToSelect); rangeToSelect.select (); } else if (document.createRange && window.getSelection) { range = document.createRange(); range.selectNodeContents(el); sel = window.getSelection(); sel.removeAllRanges(); sel.addRange(range); } } 

为了使Tim提出的代码更加完整,可以将选定的内容自动复制到剪贴板:

 <script type="text/javascript"> function selectElementContents(el) { var body = document.body, range, sel; if (document.createRange && window.getSelection) { range = document.createRange(); sel = window.getSelection(); sel.removeAllRanges(); try { range.selectNodeContents(el); sel.addRange(range); } catch (e) { range.selectNode(el); sel.addRange(range); } document.execCommand("copy"); } else if (body.createTextRange) { range = body.createTextRange(); range.moveToElementText(el); range.select(); range.execCommand("Copy"); } } </script> <table id="tableId"> <thead> <tr><th>Heading</th><th>Heading</th></tr> </thead> <tbody> <tr><td>cell</td><td>cell</td></tr> </tbody> </table> <input type="button" value="select table" onclick="selectElementContents( document.getElementById('tableId') );">