我正在使用http://www.steamdev.com/zclip/#usage将一些文本复制到剪贴板,该代码工作得很好。它使用flash创建一个crossbrowser解决方案,它基于ZeroClipboard,这似乎被认为是目前最好的解决方案。
但是我想在我的页面上有多个副本到剪贴板按钮或链接。这是一个例子。
http://jsfiddle.net/stofke/TB23d/
此代码有效,它将优惠券代码的文本复制到剪贴板,并打开一个包含正确链接的新页面。如何在其他链接上使用该代码,而不必为每个链接/ id复制它。
只使用班级
$(function() {
$('.copy').zclip({
path: 'http://shopsheep.com/js/ZeroClipboard.swf',
copy: $(this).text(),
afterCopy: function() {
window.open($(this).attr('href'));
}
});
});
不起作用:正如您在此处所见:http://jsfiddle.net/stofke/EAZYW/ 如果删除afterCopy函数,你会看到$(this).text()将返回整个页面,而不仅仅是链接标记之间的文本。
做这样的事情
$(function() {
$('a.copy', this).zclip({
path: 'http://shopsheep.com/js/ZeroClipboard.swf',
copy: $('a.copy', this).text(),
});
});
略微改进,但返回链接标记之间的所有文本,如此处所示。 http://jsfiddle.net/stofke/hAh3j/
答案 0 :(得分:4)
这似乎有效 - 有人可能会让它更优雅
$(function() {
$('.copy').each(function() {
var linkId = $(this).attr("id");
$(this).zclip({
path: 'http://shopsheep.com/js/ZeroClipboard.swf',
copy: $("#"+linkId).text(),
afterCopy: function() {
window.open($('#'+linkId).attr('href'));
}
});
});
});
答案 1 :(得分:2)
我实际上发现直接使用ZeroClipboard同样容易,我只是添加了这段代码,以防有人想要一个不使用zclip的解决方案。
ZeroClipboard.setMoviePath('http://shopsheep.com/js/ZeroClipboard.swf');
$(document).ready(function() {
$(".copy").each(function(i) {
var clip = new ZeroClipboard.Client();
var myTextToCopy = $(this).text();
var myTextUrl = $(this).attr('href');
clip.setText(myTextToCopy);
clip.addEventListener('complete', function(client, text) {
window.open(myTextUrl);
});
clip.glue($(this).attr("id"));
});
});
答案 2 :(得分:0)
这就是我们在Oodles Technologies中所遵循的。
要将零拷贝用于剪贴板,您需要两个文件
1。 ZeroClipboard.js
2 .ZeroClipboard.swf
这两个文件都可以从这里下载
<html>
<head>
<script src =”../ZeroClipboard.js”></script>
<script >
// configure ZeroClipboard first
ZeroClipboard.config( { moviePath : /path/swffile/ZeroClipboard.swf } );
// initialize constructor
var client = new ZeroClipboard($(“#elementid”));
/* elementid is the element on which click , the data will copy to clipboard. you can also pass multiple elements, it use jquery selector */
</script>
<body>
<input type=”text” id =”targetid”></button>
<button id =”elementid” data-clipboard-text ='data for copy’ >copy</button>
</body>
</head>
<html>
当元素传递给ZeroClipboard的构造函数时,ZeroClipboard会自动复制data-clipboard-text属性的值
答案 3 :(得分:0)
轻量级jQuery解决方案...重用类来复制任何元素的文本。
$(document).on('click', '.copytoclipboard', function(e) {
if($("#holdtext").length < 1)
$("body").append('<textarea id="holdtext" style="height:0;width:0;border:0;outline:0;resize:none;"></textarea>');
$("#holdtext").val($(this).text()).select();
document.execCommand("Copy");
});