GWT中復(fù)制到剪貼板 js+flash實(shí)現(xiàn)復(fù)制 兼容性比較好
但是用flash就可以復(fù)制。例子就是VeryCd,看“復(fù)制選中的連接”按鈕是一個(gè)flash。看來(lái)flash的安全沙箱沒(méi)有限制將內(nèi)容復(fù)制到剪貼板
但是也是有限制的:
1 根據(jù)ZeroClipborad的人們說(shuō),這些flash必須通過(guò)網(wǎng)絡(luò)加載。
Zero Clipboard Does Not Work From Local Disk
This is a security restriction by Adobe Flash Player. Unfortunately, since we are utilizing the JavaScript-to-Flash interface ("ExternalInterface") this only works while truly online (if the page URL starts with "http://" or "https://"). It won't work running from a local file on disk.
However, there is a way for you to edit your local Flash Player security settings and allow this. Go to this website:
http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04a.html
And add the path to your local "ZeroClipboard.swf" file to the trusted files list, or try the "allow all" option.
2 flash雖然提供復(fù)制功能,但是前提是要通過(guò)用戶的一次點(diǎn)擊。意思就是不能在javascript中通過(guò)函數(shù)的方式setText就復(fù)制到剪貼板,而是調(diào)用了這個(gè)setText函數(shù)后,用戶的鼠標(biāo)在flash上有了一次點(diǎn)擊,才可以。
This library is fully compatible with Flash Player 10, which requires that the clipboard copy operation be initiated by a user click event inside the Flash movie.
這里和使用flash上傳文件的swfupload有同樣的問(wèn)題。
使用ZeroClipboard,可以將網(wǎng)頁(yè)內(nèi)容復(fù)制到剪貼板。但是ZeroClipboard沒(méi)有GWT封裝,我們項(xiàng)目是用GWT的,所以就學(xué)著swfupload的GWT封裝,把ZeroClipboard也封裝成GWT可以調(diào)用的形式。
1 先封裝了一個(gè)zeroclipboard.jar
2 項(xiàng)目中使用的是GXT控件庫(kù),為了和控件緊密結(jié)合,寫(xiě)了一個(gè)ZClipboardBinder類(lèi),將兩者結(jié)合起來(lái)
3 使用方法見(jiàn)下(Zeroclipboard_test.java)
package zero.clipboard.test.client;
import java.util.Date;
import zero.clipboard.test.client.ZClipboardBinder.ClipboardListener;
import com.extjs.gxt.ui.client.widget.LayoutContainer;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.ui.RootPanel;
/**
* Entry point classes define <code>onModuleLoad()</code>.
*/
public class Zeroclipboard_test implements EntryPoint {
public void onModuleLoad() {
LayoutContainer c = new LayoutContainer();
c.setSize(400, 300);
Button btn = new Button("Copy Hello World");
// 將控件和ZeroClipboard綁定
// ZClipboardBinder.bind(btn, "Hello World");
ZClipboardBinder.bind(btn, new ClipboardListener() {
@Override
public String prepareCopy() {
return (new Date()).toString();
}
});
c.add(btn);
RootPanel.get().add(c);
}
}
相關(guān)下載都在附件中了。
示意結(jié)果
點(diǎn)擊按鈕后——其實(shí)是點(diǎn)擊了上面的flash,使用ctrl+v,就能看到結(jié)果。
現(xiàn)在發(fā)現(xiàn)有很多有意義的功能都不能用javascript實(shí)現(xiàn),例如多文件上傳和復(fù)制到剪貼板,都是通過(guò)flash做中介,“曲線”實(shí)現(xiàn)的 ,不知道最后HTML5有沒(méi)有解決這些問(wèn)題,不用我們兜兜轉(zhuǎn)轉(zhuǎn)。
Zero Clipboard 開(kāi)源的 JavaScript+flash 復(fù)制庫(kù)類(lèi)
- JavaScript實(shí)現(xiàn)一鍵復(fù)制文本功能的示例代碼
- Web js實(shí)現(xiàn)復(fù)制文本到粘貼板
- 使用js實(shí)現(xiàn)復(fù)制功能
- 使用?JS?復(fù)制頁(yè)面內(nèi)容的三種方案
- JavaScript實(shí)現(xiàn)一鍵復(fù)制內(nèi)容剪貼板
- js復(fù)制文本到粘貼板(Clipboard.writeText())
- JS實(shí)現(xiàn)一鍵復(fù)制
- Vue中使用highlight.js實(shí)現(xiàn)代碼高亮顯示以及點(diǎn)擊復(fù)制
- js實(shí)現(xiàn)復(fù)制粘貼的兩種方法
- JavaScript+Html5實(shí)現(xiàn)按鈕復(fù)制文字到剪切板功能(手機(jī)網(wǎng)頁(yè)兼容)
- JS實(shí)現(xiàn)復(fù)制內(nèi)容到剪貼板功能兼容所有瀏覽器(推薦)
- js實(shí)現(xiàn)點(diǎn)擊復(fù)制當(dāng)前文本到剪貼板功能(兼容所有瀏覽器)
- 簡(jiǎn)單實(shí)現(xiàn)兼容各大瀏覽器的js復(fù)制內(nèi)容到剪切板
- JavaScript 實(shí)現(xiàn)完美兼容多瀏覽器的復(fù)制功能代碼
- 兼容主流瀏覽器的JS復(fù)制內(nèi)容到剪貼板
- js實(shí)現(xiàn)的復(fù)制兼容chrome和IE
- 兼容所有瀏覽器的js復(fù)制插件Zero使用介紹
- 用js將內(nèi)容復(fù)制到剪貼板兼容瀏覽器
- js復(fù)制網(wǎng)頁(yè)內(nèi)容并兼容各主流瀏覽器的代碼
- JS復(fù)制內(nèi)容到剪切板的實(shí)例代碼(兼容IE與火狐)
- JS/FLASH實(shí)現(xiàn)復(fù)制代碼到剪貼板(兼容所有瀏覽器)
- 多瀏覽器兼容性比較好的復(fù)制到剪貼板的js代碼
- 兼容IE與Firefox的js 復(fù)制代碼
- JavaScript 復(fù)制功能代碼 兼容多瀏覽器
- 至2023年最好用的兼容多瀏覽器的原生js復(fù)制函數(shù)copyText
相關(guān)文章
詳解JS中定時(shí)器setInterval和setTImeout的this指向問(wèn)題
在js中setTimeout和setInterval都是用來(lái)定時(shí)的一個(gè)功能,下面這篇文章主要給介紹了JS中setInterval和setTImeout的this指向問(wèn)題,文中通過(guò)示例介紹的很詳細(xì),有需要的朋友可以參考借鑒,一起來(lái)看看吧。2017-01-01JavaScript在控件上添加倒計(jì)時(shí)功能的實(shí)現(xiàn)代碼
JavaScript在控件上添加倒計(jì)時(shí)功能,主要原理是利用控件的setEnable(true)/setEnable(false)來(lái)進(jìn)行設(shè)置控件的可用與不可用狀態(tài),實(shí)現(xiàn)過(guò)程非常簡(jiǎn)單,需要的的朋友參考下吧2017-07-07處理JavaScript值為undefined的7個(gè)小技巧
這篇文章主要介紹了處理JavaScript值為undefined的7個(gè)小技巧,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07JS如何去掉小數(shù)末尾多余的0,并且最多保留兩位小數(shù)
這篇文章主要介紹了JS如何去掉小數(shù)末尾多余的0,并且最多保留兩位小數(shù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04js實(shí)現(xiàn)iGoogleDivDrag模塊拖動(dòng)層拖動(dòng)特效的方法
這篇文章主要介紹了js實(shí)現(xiàn)iGoogleDivDrag模塊拖動(dòng)層拖動(dòng)特效的方法,實(shí)例分析了javascript操作拖動(dòng)層的技巧,需要的朋友可以參考下2015-03-03js實(shí)現(xiàn)無(wú)限級(jí)樹(shù)形導(dǎo)航列表效果代碼
這篇文章主要介紹了js實(shí)現(xiàn)無(wú)限級(jí)樹(shù)形導(dǎo)航列表效果代碼,通過(guò)一個(gè)封裝的JS類(lèi)實(shí)現(xiàn)無(wú)限樹(shù)形導(dǎo)航的效果,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2015-09-09