如何通过单击使ZeroClipboard工作?

时间:2013-07-31 05:38:23

标签: javascript zeroclipboard

我在这里有一个有效的例子 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>

1 个答案:

答案 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事件之前触发