查询出公司 有的时候复制数据不对.
处理.
onRenderCell(self,arg) 的时候 就将数据注册到flash按钮下.
var entity = arg.data;
var t="应用版本:",v=entity.get("version");
if(v==1)t+="进销存标准版";
else if(v==2)t+="进销存VIP";
else if(v==220)t+="ERP(按订单收费)";
else if(v==200)t+="ERP旗舰版";
else if(v==210)t+="ERP扶持版";
else if(v==5)t+="CRM";
else if(v==6)t+="旺牛插件";
t+="\n公司名称:"+entity.get("companyName");
t+="\n公司UID:"+entity.get("companyID");
t+="\n数据库 :"+entity.get("groupAlias");
//alert("id:"+"id_"+arg.data.entityId+",数据:"+t);
//ZeroClipboard 先生成一个flash的按钮 覆盖在 复制链接上.通过id绑定事件.
var copyLink = $DomUtils.xCreate({
tagName: "A",
href: "#",
id:"id_"+arg.data.entityId,
content: "复制",
onclick: function(){
return true;
}
});
$(arg.dom).empty();
$(arg.dom).append(copyLink);
setCopyClip("id_"+arg.data.entityId,t);
arg.processDefault=false;
function setCopyClip(id,text) {
var clip = new ZeroClipboard.Client(); //初始化对象
ZeroClipboard.setMoviePath("js/copy/ZeroClipboard.swf");
clip.setHandCursor(true); //设置手型
clip.setText(text);
clip.addEventListener('complete', function (client) { //创建监听事件
alert('********** 已复制到剪切板v2 *********** \n\n' + text);
});
clip.glue(id); //将flash覆盖至指定ID的DOM上
}
=======问题=========
因为之前 //arg.dom.innerHTML="<a id='id_"+arg.data.entityId+"' onMouseOver='copy(this);'>复制</a>";
copy 的时候是绑定this 而绑定事件 是在执行的时候 clip.glue(ee);
是点击的时候再绑定的. 应该是先绑定后再执行点击.
//@Global
function init() {
ZeroClipboard.setMoviePath('js/copy/ZeroClipboard.swf');
clip = new ZeroClipboard.Client();
clip.setHandCursor(true);
clip.addEventListener('complete', function(clip, text) {
alert('********** 已复制到剪切板 *********** \n\n' + text);
});
}
//@Global
function copy(ee) {
var id=ee.id;
var entity = view.get("#dsCompany").getData().getById(id.substring(3));
var t="应用版本:",v=entity.get("version");
if(v==1)t+="进销存标准版";
else if(v==2)t+="进销存VIP";
else if(v==220)t+="ERP(按订单收费)";
else if(v==200)t+="ERP旗舰版";
else if(v==210)t+="ERP扶持版";
else if(v==5)t+="CRM";
else if(v==6)t+="旺牛插件";
t+="\n公司名称:"+entity.get("companyName");
t+="\n公司UID:"+entity.get("companyID");
t+="\n数据库 :"+entity.get("groupAlias");
clip.setText(t);
if (clip.div) {
clip.receiveEvent('mouseout', null);
clip.reposition(ee);
} else {
clip.glue(ee);
}
clip.receiveEvent('mouseover', null);
}
--------------------------为何要点击两次-------------------------
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>插件</title>
<script src='ZeroClipboard.min.js'></script>
<script>
function setCopyClip(id)
{
clip = new ZeroClipboard.Client(); //初始化对象
ZeroClipboard.setMoviePath("ZeroClipboard.swf");
clip.setHandCursor( true ); //设置手型
var oA = document.getElementById(id);
var code = oA.getAttribute('data-code');
clip.setText(code);
clip.addEventListener('complete', function (client) { //创建监听事件
alert('复制成功!');
});
clip.glue(id); //将flash覆盖至指定ID的DOM上
}
window.onload=function()
{
var aA = document.getElementsByTagName('a');
for (var i = 0; i < aA.length; i++)
{
aA[i].onclick=function()
{
setCopyClip(this.id)
}
}
}
</script>
</head>
<body>
<p class="intro">券号:BBBzc1234567A473D00051
<br>
<a href="javascript:;" class="hdl-copymemcode" id='BBBzc1234567A473D00051' data-code="BBBzc1234567A473D00051">复制券号</a>
<br>使用状况:还未开始或已过期
</p>
<p class="intro">券号:AAAzc1234567A473D00051
<br>
<a href="javascript:;" class="hdl-copymemcode" id='AAAzc1234567A473D00051' data-code="AAAzc1234567A473D00051">复制券号</a>
<br> 使用状况:还未开始或已过期
</p>
</body>
</html>
- 页面初始化时,
<a>
元素有onclick事件; - 第一次点击, 触发
onclick
事件, 调用setCopyClip
函数后, 绑定一个ZeroClipboard.Client
对象; - 这条是重点 : 在
new ZeroClipboard.Client
时,ZeroClipboard
会创建一个div
元素覆盖在<a>
元素之上; - 第二次点击, 因为ZeroClipboard创建的
div
在<a>
元素之上, 所以不会触发onclick
事件; - 第一次绑定的
ZeroClipboard.Client
对象触发complete
事件, 弹出复制成功!
弹窗.