我们web上的复制,有时候尽管可以用鼠标选中,然后复制,但是某些时候,文字不方便选中。因此,我们自定义一个复制按钮,然后通过点击它,把想要的内容复制到剪贴板上。我归纳总结了几种方法:

1、ZeroClipboard.js

     以前用过这个js,它需要配合swf格式的flash发挥作用,可谓曲线救国,而且不太好用。它的浏览器兼容性ok,我摘了官网上的原话:

The ZeroClipboard library provides an easy way to copy text to the clipboard using an invisible Adobe Flash movie and a JavaScript interface.

The "Zero" signifies that the library is invisible and the user interface is left entirely up to you.

2、window.clipboardData

    这个对象,只有在IE下有值,其它浏览器下为null或者undefined。我尝试了下 clipboardData.setData("Text", txt);此方法可用,参数Text表示文本格式,txt是要复制的内容。此方法局限性有二,第一是IE浏览器的限制,第二是对于复杂结构的web元素,如果我们自己获取到元素的内容,可能失去了原本的样式。比如,web上的显示如下:

wbq

school

today

我们通过jquery或者js操作,获取到文本的内容是这样的:wbq school today,然后我们可能还得处理。

3、execCommand

execCommand方法是执行一个对当前文档,当前选择或者给出范围的命令。处理Html数据时常用。比如字体加粗、字号等等。document.execCommand在IE和chrome浏览器下都有定义。但是,document.body.createTextRange仅仅定义在IE下,它用来创建一个选中范围。还有一个这样的方法 document.createRange,它也是在两大浏览器上都有定义。具体怎么用,有兴趣的可以查询资料。

4、clipboard.js

  在chrome下用的很happy,在Ie 11下,测试通不过,直接沮丧了。

总之,web上的兼容性是一个问题,我综合各种方法,应用到我们程序中,详见代码:

 @using ResourceShare.Web.Helpers;
<div class="row">
<div class="form-horizontal">
<div style="padding-left:35px;">
<h3>数据库列表</h3>
</div>
<div style="padding: 0 15px 0 20px; margin-top:8px;">
<ul class="addcorel" id="dblist">
@foreach (var item in Model)
{
<li style=" float:left"><label>@item</label></li>
}
</ul>
<div style="clear:both;"></div>
</div>
</div>
</div>
<script src="~/Content/js/lib/clipboard.js"></script>
<script type="text/javascript"> var button = "<button type='button' class='btn btn-default' id='copy' data-clipboard-action='copy' data-clipboard-target='#dblist' onclick='copyData()'>复制</button>"; if ($(".modal-footer #copy").length == ) {
$(button).insertBefore(".modal-footer button");
} var clipboard; function copyData() { if (window.clipboardData) { var obj = $("#dblist");
var rng = document.body.createTextRange();
rng.moveToElementText(obj[]);
rng.scrollIntoView();
rng.select();
rng.execCommand("Copy");
rng.collapse(false);
showTipMessage("复制成功");
}
else {
if (clipboard == null) {
clipboard = new Clipboard('#copy');
clipboard.on('success', function (e) {
showTipMessage("复制成功");
e.clearSelection();
}); clipboard.on('error', function (e) {
showTipMessage("复制出错" + e);
});
}
}
}
</script>

我自定义了一个按钮,给它加了一个点击处理函数copyData,通过浏览器检测,IE下,采用了方法3,chrome下采用方法4。我要复制的对象是 id="dblist"的ul下的li里的文本,如下图所示:

粘贴到excel中,留作备用。

  

最新文章

  1. 个性化设置phpMyAdmin,去掉“以树形显示数据库”,禁用“发送错误报告”
  2. iOS开发之多线程技术
  3. JVM 小结
  4. Hive与数据库的异同
  5. [Everyday Mathematic]20150217
  6. JS如何获取iframe内html的body值
  7. Hibernate缓存、组件、继承映射
  8. 转: 关于异步promises
  9. poj3207(two-sat)
  10. 暑假集训D11总结
  11. Similarity measure
  12. shell 命令使用笔记
  13. C#生成不重复的N位随机数
  14. Google社交梦之隐私问题
  15. kubectl 命令记录 转帖自: https://www.kubernetes.org.cn/doc-45
  16. SQL Server 中ROW_NUMBER() OVER基本用法
  17. 20145208 蔡野《网络对抗》shellcode注入&amp;Return-to-libc攻击深入
  18. ztree树的递归
  19. android:ViewPager动画总结
  20. 【Leetcode】【Medium】Divide Two Integers

热门文章

  1. 【JavaWeb】客户关系管理系统
  2. 浅谈Java SE、Java EE、Java ME三者的区别
  3. hdu4149 Magic Potion
  4. 搭建ssr服务器
  5. RegexKitLite编译报错
  6. the c programing language 学习过程6
  7. linux下stricky
  8. activiti怎么实现用户自定义流程?请先看这里
  9. mongodb3.0分片及java代码连接操作测试(开启用户验证)
  10. 视频显示格式720p