我正在尝试在动态生成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 </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错误,但我却看不到它
感激不尽的所有想法和建议
答案 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 </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将其作为字符串提醒