基本使用,官網上的教程,就不說了.官網地址: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的位置是根據下面的方法
var info = {
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這些東西和各瀏覽器對各種標籤的解釋差異 都沒有那麼清楚,還是花了不少時間在這個小東西上面-_-!
寫下來,希望能幫到碰到類似問題的朋友