ZeroClipboard事件未触发

时间:2013-06-06 05:36:05

标签: jquery twitter-bootstrap zeroclipboard

我正在尝试在动态生成HTML的页面上使用最新版本的ZeroClipboard插件。我已经尝试了几种不同的实现方式,但它们都具有相同的整体效果。我似乎最终得到一个包含flash元素的页面,因为当我右键单击相应的元素时,我会弹出“关于Flash Player” - 但我也看到同样的弹出窗口“Movie not loaded”

我正在使用JQuery 1.9.1和Twitter Bootstrap 2.3.1。我的flash插件是v11.7.700.202。我的网络服务器是IIS7.5

我用来动态生成HTML的代码在循环中读取用户ID数组,如下所示:

str=str+ '<span class="bMail_address" id=span-"'+
  st.EmailAddresses[i]+
  '" data-clipboard-text="'+
  st.EmailAddresses[i]+
  '@mydomain.com">'+
  st.EmailAddresses[i] +
  "@mydomain.com&nbsp;&nbsp;</span>";

在循环遍历数组并输出结果字符串之后,我尝试按如下方式添加ZeroClipboard内容: -

// bind ZeroClipboard
$('.bMail_address').each (function() {
    // read text to copy from the data-clipboard-text attribute
    var msg=$(this).attr('data-clipboard-text');

    //create ZeroCiplboard object
    var clip = new ZeroClipboard();

    // set the text to copy
    clip.setText(msg);

    // setup event handlers
    clip.on('complete', function (client, text) {
        alert("copied: "+text+ "to clipboard");
    });

    clip.on( 'noflash', function ( client, args ) {
        alert("You don't support flash");
    });

    // glue the object to the element   
    clip.glue($(this)); 

});

使用Chrome调试工具,我可以看到循环中的迭代为我所有新创建的对象创建新的ZeroClipboard对象,并且没有未捕获的异常,但警报从未发生过,所以我假设“完整”事件永远不会触发< / p>

我确定我犯了一些简单的noob错误,但我却看不到它

感激不尽的所有想法和建议

1 个答案:

答案 0 :(得分:2)

关于flash错误:制作&#34; ZeroClipboard.swf&#34;通过添加以下内容向浏览器提供文件:

 `ZeroClipboard.setDefaults( { moviePath: 'http://YOURSERVER/path/ZeroClipboard.swf' } );`

另见:https://github.com/zeroclipboard/ZeroClipboard/blob/master/docs/instructions.md

第二,您想要添加到剪贴板的内容以及何时?

什么(粘合这个)将是一个文本,什么时候是一个事件(b.e。一个按钮点击)。

Glue()将向您粘贴的dom level元素添加一个click事件。如果元素得到了数据剪贴板文本&#39;它的值将由胶水使用(您不必设置它)。

示例:点击时将电子邮件地址添加到剪贴板(将为每个电子邮件地址创建一个剪辑):

<script>

ZeroClipboard.setDefaults( { moviePath: 'ZeroClipboard-master/ZeroClipboard.swf' } );   

$(function () {

    st = {}
    st.EmailAddresses = Array('test','test2','test3'); 
    $.each(st.EmailAddresses,function(i,emailadres)
    {

      str = '<span class="bMail_address" id=span-"'+
      emailadres+
      '" data-clipboard-text="'+
      emailadres+
      '@mydomain.com">'+
      emailadres +
      "@mydomain.com&nbsp;&nbsp;</span>";

       $('.container').append(str);

    });

    var clip = new Array(); 
    // bind ZeroClipboard
    $('.bMail_address').each (function(i,email) {
    //create ZeroCiplboard object
    clip[i] = new ZeroClipboard();

    clip[i].on('complete', function (client, text) {
    alert("copied: "+ text.text+ " to clipboard");
    });

    clip[i].glue(email); 
    });


})
</script>

注意:oncomplete函数中的文本是一个对象,因此请使用text.text将其作为字符串提醒