基本使用,官网上的教程,就不说了.官网地址:http://code.google.com/p/zeroclipboard/
有一点点补充,就是在本地测试静态页的时候,需要在falsh的全局安全设置中,把下下来的flash添加进去,具体操作方法见flash的网站.下面的地址可以设置
http://www.macromedia.com/support/documentation/cn/flashplayer/help/settings_manager04.html
使用过程中还是遇到了各种各样的问题。我的需求是:在弹出一个对话框(jquery dialog)之后,初始化zeroclipboard,zeroclipboard初始化flash文件的时候确定flash的位置是根据下面的方法
left: 0,
top: 0,
width: obj.width ? obj.width : obj.offsetWidth,
height: obj.height ? obj.height : obj.offsetHeight
};
while (obj && (obj != stopObj)) {
info.left += obj.offsetLeft;
info.top += obj.offsetTop;
obj = obj.offsetParent;
}
我在用的时候跟官网的例子一样的结构
<span id="clip_container"><span id="clip_link" ><b>复制链接到剪贴板</b></span></span>
最后clip.glue('clip_link', 'clip_container' );
生成的dom元素都正常,但是就找不到包裹着flash的DIV在哪儿(设置了背景色,宽高都不为0),不小心地改了生成的DIV的top跟left,终于发现DIV出来了。原因是jquery ui生成的对话框,也是div,并且设置了position属性,内层div显示的时候left跟top属性值就是相对这个父div的。事实上zeroclipboard生成出来的dom元素结构,是希望left跟top属性是相对'clip_container' 这个元素的。把clip_container元素加上style="position:relative;"再测试。
firefox,chrome下正常了,IE9,没反应。
用工具看生成出来的div和flash,发现div和flash的height值为0(会在页面上不显示)。猜测原因可能是span的offsetHeight会被IE解释成0, 还是尝试各种方法最后发现把<span id="clip_link" >元素加上属性style="display:inline-block"问题就解决了(直接用block会出现flash的宽度占据span所在行的整行)
目前还没有在万恶的IE6下测试。大概的问题原因也知道了,但是因为对offsetWidth,offsetHeight这些东西和各浏览器对各种标签的解释差异 都没有那么清楚,还是花了不少时间在这个小东西上面-_-!
写下来,希望能帮到碰到类似问题的朋友