最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript flash復(fù)制庫類 Zero Clipboard

 更新時間:2011年01月17日 22:48:27   作者:  
開發(fā)中經(jīng)常會用到復(fù)制的功能,在 IE 下實現(xiàn)比較簡單。但要想做到跨瀏覽器比較困難了。
本文將介紹一個跨瀏覽器的庫類 Zero Clipboard 。它利用 Flash 進行復(fù)制,所以只要瀏覽器裝有 Flash 就可以運行,而且比 IE 的 document.execCommand(“Copy”) 更加靈活。

Zero Clipboard 的實現(xiàn)原理

Zero Clipboard 利用 Flash 進行復(fù)制,之前有 Clipboard Copy 解決方案,其利用的是一個隱藏的 Flash。但最新的 Flash Player 10 只允許在 Flash 上進行操作才能啟動剪貼板。所以 Zero Clipboard 對此進行了改進,用了一個透明的 Flash ,讓其漂浮在按鈕之上,這樣其實點擊的不是按鈕而是 Flash ,也就可以使用 Flash 的復(fù)制功能了。

如何使用 Zero Clipboard

首先下載 Zero Clipboard ,并解壓縮。其中需要兩個文件:ZeroClipboard.js 和 ZeroClipboard.swf ,將這兩個文件放入到你的項目中。
Zero Clipboard : [主頁] [下載] [演示]
核心功能
第一步,導(dǎo)入 ZeroClipboard.js 文件:

<script type="text/javascript" src="ZeroClipboard.js"></script>
再設(shè)置 ZeroClipboard.swf 文件的路徑:

ZeroClipboard.setMoviePath( "ZeroClipboard.swf" );
注意:以上 ZeroClipboard.js, ZeroClipboard.swf 兩個文件的路徑都需要替換為你項目中對應(yīng)文件的路徑?;蛘咭部梢允且粋€絕對路徑。
然后就使用了:

復(fù)制代碼 代碼如下:

var clip = new ZeroClipboard.Client(); // 新建一個對象
clip.setHandCursor( true ); // 設(shè)置鼠標為手型
clip.setText("哈哈"); // 設(shè)置要復(fù)制的文本。
// 注冊一個 button,參數(shù)為 id。點擊這個 button 就會復(fù)制。
// 這個 button 不一定要求是一個 input 按鈕,也可以是其他 DOM 元素。
clip.glue("copy-botton"); // 和上一句位置不可調(diào)換

這樣,這樣基本功能實現(xiàn)了,點擊按鈕就可以復(fù)制設(shè)置好的文本了。你可能注意到了,待復(fù)制的文本是固定的,如果想要動態(tài)改變的怎么辦,比如復(fù)制一個輸入框中的內(nèi)容。不用擔心,下面會講到的。

其他函數(shù)
Zero Clipboard 還提供了一些其他的函數(shù),其中有一些非常有用。

reposition() 方法
因為按鈕上漂浮有一個 Flash 按鈕,所以當頁面大小發(fā)生變化時,F(xiàn)lash 按鈕可能會錯位,這樣就點不著了。 不要緊,Zero Clipboard 提供了一個 reposition() 方法,可以重新計算 Flash 按鈕的位置。我們可以將它綁定到 resize 事件上。
復(fù)制代碼 代碼如下:

bind(window, "resize", function(){
clip.reposition();
});

bind 是一個跨瀏覽器的事件綁定函數(shù)。詳情請見4個跨瀏覽器必備的函數(shù) 。
hide() 和 show() 方法
這兩個方法可以隱藏和顯示 Flash 按鈕 。其中 show() 方法會調(diào)用 reposition() 方法。

setCSSEffects() 方法
當鼠標移到按鈕上或點擊時,由于有 Flash 按鈕的遮擋,所以像 css “:hover”, “:active” 等偽類可能會失效。setCSSEffects() 方法就是解決這個問題。首先我們需要將偽類改成類,比如:

#copy-botton:hover{
border-color:#FF6633;
}
/* 可以改成下面的 ":hover" 改成 ".hover" */
#copy-botton.hover{
border-color:#FF6633;
}
我們可以調(diào)用 clip.setCSSEffects( true ); 這樣 Zero Clipboard 會自動為我們處理:將類 .hover 當成偽類 :hover 。

getHTML() 方法
如果你想自己實例一個 Flash ,不用 Zero Clipboard 的附著方法,那么這個方法就可以幫上忙了。它接受兩個參數(shù),分別為 Flash 的寬度和高度。返回的是 Flash 對應(yīng)的 HTML 代碼。例如:

var html = clip.getHTML( 150, 20 );
你可以用 innerHTML 或直接 document.write(); 進行輸出。
以下是我測試下輸出的 HTML 代碼:

復(fù)制代碼 代碼如下:

<embed id="ZeroClipboardMovie_1" src="zeroclipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="150" height="20" name="ZeroClipboardMovie_1" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=1&amp;width=150&amp;height=20" wmode="transparent" />

IE 的 Flash JavaScript 通信接口上有一個 bug 。你必須插入一個 object 標簽到一個已存在的 DOM 元素中。并且在寫入 innerHTML 之前請確保該元素已經(jīng) appendChild 方法插入到 DOM 中。
Zero Clipboard 事件處理
Zero Clipboard 提供了一些事件,你可以自定義函數(shù)處理這些事件。Zero Clipboard 事件處理函數(shù)為 addEventListener(); 例如當 Flash 完全載入后會觸發(fā)一個事件 “l(fā)oad” 。
復(fù)制代碼 代碼如下:

clip.addEventListener( "load", function(client) {
alert("Flash 加載完畢!");
});

Zero Clipboard 會將 clip 對象作為參數(shù)傳入。即上例中的 “client” 。
還有 “l(fā)oad” 也可以寫成 “onLoad”,其他的事件也可以這樣。
其他事件還包括:

mouseOver 鼠標移上事件
mouseOut 鼠標移出事件
mouseDown 鼠標按下事件
mouseUp 鼠標松開事件
complete 復(fù)制成功事件
其中 mouseOver 事件和 complete 事件比較常用。
前面說過,如果需要動態(tài)改變待復(fù)制的內(nèi)容,那 mouseOver 事件就可以派上用場了。例如需要動態(tài)復(fù)制一個 id 為 test 的輸入框中的值,我們可以在鼠標 over 的時候重新設(shè)置值。
復(fù)制代碼 代碼如下:

clip.addEventListener( "mouseOver", function(client) {
var test = document.getElementById("test");
client.setText( test.value ); // 重新設(shè)置要復(fù)制的值
});

復(fù)制成功:
復(fù)制代碼 代碼如下:

clip.addEventListener( "complete", function(){
alert("復(fù)制成功!");
});

好了,就介紹到這里吧。趕快自己試驗下吧。

相關(guān)文章

  • 前端使用minio傳輸文件的代碼及拓展

    前端使用minio傳輸文件的代碼及拓展

    MinIO是一款基于Go語言的高性能對象存儲服務(wù),非常適合于存儲大容量非結(jié)構(gòu)化的數(shù)據(jù),例如圖片、視頻、日志文件、備份數(shù)據(jù)和容器/虛擬機鏡像等,這篇文章主要給大家介紹了關(guān)于前端使用minio傳輸文件的相關(guān)資料,需要的朋友可以參考下
    2024-07-07
  • JS的拖拽屬性draggable詳解

    JS的拖拽屬性draggable詳解

    這篇文章主要介紹了JS的拖拽屬性draggable詳解,本文通過示例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • JS實現(xiàn)簡易圖片自動輪播

    JS實現(xiàn)簡易圖片自動輪播

    這篇文章主要為大家詳細介紹了JS實現(xiàn)簡易圖片自動輪播,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • JavaScript 俄羅斯方塊游戲?qū)崿F(xiàn)方法與代碼解釋

    JavaScript 俄羅斯方塊游戲?qū)崿F(xiàn)方法與代碼解釋

    這篇文章主要介紹了JavaScript 俄羅斯方塊游戲,結(jié)合實例形式詳細分析了JavaScript 俄羅斯方塊游戲原理、實現(xiàn)步驟及相關(guān)操作注意事項,需要的朋友可以參考下
    2020-04-04
  • JavaScript加載導(dǎo)出MIF文件的示例詳解

    JavaScript加載導(dǎo)出MIF文件的示例詳解

    MIF是由Pitney Bowes Software開發(fā)的一種文本格式,用于存儲地理空間數(shù)據(jù),它通常與地圖可視化和地理信息系統(tǒng)(GIS)相關(guān)聯(lián),MIF文件通常成對出現(xiàn),本文給大家介紹了javascript加載導(dǎo)出 MIF文件示例,需要的朋友可以參考下
    2024-12-12
  • JavaScript實現(xiàn)像素鳥小游戲的詳細流程

    JavaScript實現(xiàn)像素鳥小游戲的詳細流程

    最近通過javascript這門語言,然后結(jié)合html的來寫一個簡單的小游戲 ,這篇文章主要給大家介紹了關(guān)于JavaScript實現(xiàn)像素鳥小游戲的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • javascript中一些奇葩的日期換算方法總結(jié)

    javascript中一些奇葩的日期換算方法總結(jié)

    這篇文章主要給大家總結(jié)介紹了關(guān)于javascript中的一些奇葩的日期換算方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • uniapp自定義頁面跳轉(zhuǎn)loading的實現(xiàn)代碼

    uniapp自定義頁面跳轉(zhuǎn)loading的實現(xiàn)代碼

    有些頁面加載起來比較慢,為了加強用戶體驗效果,所以一般都會做一個頁面加載等待的提示,頁面加載完成后消失,下面這篇文章主要給大家介紹了關(guān)于uniapp自定義頁面跳轉(zhuǎn)loading的實現(xiàn)代碼,需要的朋友可以參考下
    2023-06-06
  • JS項目中對本地存儲進行二次的封裝的實現(xiàn)

    JS項目中對本地存儲進行二次的封裝的實現(xiàn)

    這篇文章主要介紹了JS項目中對本地存儲進行二次的封裝,這里我們將要使用到的key存儲下來,新建一個叫constant-storage.js的文件,對外暴露一些key的鍵名,也方便后期統(tǒng)一修改,這里因為都是恒量,所以名稱我們都用大寫表示,需要的朋友可以參考下
    2022-07-07
  • JS中正則表達式只有3種匹配模式(沒有單行模式)詳解

    JS中正則表達式只有3種匹配模式(沒有單行模式)詳解

    下面小編就為大家?guī)硪黄狫S中正則表達式只有3種匹配模式(沒有單行模式)詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07

最新評論

靖州| 永寿县| 富源县| 阿城市| 富锦市| 灯塔市| 东光县| 青铜峡市| 台中市| 永宁县| 石泉县| 陇川县| 靖西县| 长武县| 洛宁县| 清丰县| 合肥市| 临潭县| 株洲市| 伊通| 平顶山市| 依兰县| 仁寿县| 东乌珠穆沁旗| 武山县| 武汉市| 库车县| 东山县| 稻城县| 尚义县| 临沭县| 册亨县| 安西县| 阳原县| 林甸县| 平顶山市| 普兰店市| 贵港市| 尚志市| 漠河县| 大余县|