我在这里有一个有效的例子 http://enginiku.byethost17.com/stack.php
我想要的是根据点击的块将数据复制到剪贴板。这完全没问题。但问题是我需要单击块,将光标移离块,再次单击,然后才能复制数据。我明白也许是因为该区域变成了flash对象。
但我希望它只在一次点击中复制数据(第一次)。请建议一个出路!!
这是我的剧本
<script>
function copytocb(el){
var id = $(el).attr('id');
ZeroClipboard.setDefaults({moviePath:'http://enginiku.byethost17.com/ZeroClipboard.swf'});
var clip = new ZeroClipboard($('#'+id));
clip.on('complete',function(client,args){
alert('Copied');
});
}
</script>
这是相关的html
<div class="central">
<div class="maincontent">
<div class="leftcontent">
<span id="ss">Some text</span>
</div>
<div class="rightcontent">
<span id="block1" onclick="copytocb(this)" data-clipboard-text="Img1">Img</span>
<span id="block2" onclick="copytocb(this)" data-clipboard-text="Img2">Img</span>
<span id="block3" onclick="copytocb(this)" data-clipboard-text="Img3">Img</span>
<span id="block4" onclick="copytocb(this)" data-clipboard-text="Img4">Img</span>
<span id="block5" onclick="copytocb(this)" data-clipboard-text="Img5">Img</span>
</div>
</div>
</div>
答案 0 :(得分:2)
创建clip
并将其分配给相关范围后,点击它会产生所需的结果。您是否尝试将copytocb()
功能的内容放入文档就绪部分($(function(){})
)?
修改强>
$(document).ready(function() {
ZeroClipboard.setDefaults({moviePath:'http://enginiku.byethost17.com/ZeroClipboard.swf'});
var DOMarr=$('#rightcontent span').map(function(){return this;});
var clip = new ZeroClipboard(DOMarr);
clip.on('load',function(client,args){alert("Clipboard is ready for action.");});
})
另外:在跨度上省略onclick="copytocb(this)"
。这不应该是必要的,因为重叠的flash影片将自己寻找点击事件(希望如此)。
刚试过这个。另请查看他们的page。
的给定示例 <强> 2。修改:
剪贴板文本也可以通过在基础mouseover
上设置适当的span
事件来动态生成
$('#rightcontent span').mouseover(function(){
var clip.setText($(this).text());
console.log(clip.options.text); // just to show the effect ...
});
我也尝试在相同的元素上使用mousedown
,但这不起作用,因为剪辑事件将始终在跨度的mousedown事件之前触发。