兼容主流瀏覽器的JS復(fù)制內(nèi)容到剪貼板
現(xiàn)在瀏覽器種類也越來越多,諸如 IE、Firefox、Chrome、Safari等等,因此現(xiàn)在要實(shí)現(xiàn)一個(gè)js復(fù)制內(nèi)容到剪貼板的小功能就不是一件那么容易的事了。
在FLASH 9 時(shí)代,有一個(gè)通殺所有瀏覽器的js復(fù)制內(nèi)容到剪貼板的方案:
這個(gè)方案是一個(gè)最流行的方法: 著名的Clipboard Copy解決方案 利用一個(gè)clipboard.swf作為橋梁,復(fù)制內(nèi)容到剪貼板。
原理是:創(chuàng)建一個(gè)隱藏的flash文件,同時(shí)給給flash的變量FlashVars 賦值“clipboard=..”,通過這個(gè)賦值flash就會(huì)把復(fù)制的內(nèi)容放到剪貼板。這個(gè)方法兼容IE、Firefox、Opera、chrome、 Safari,真可謂“萬能”的解決方案。瀏覽器Flash的安裝率非常高,這幾乎是一個(gè)完美的解決方案。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " <html xmlns=" <head>
<title>Web開發(fā)者 - www.Admin10000.com </title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript">
var clipboardswfdata;
var setcopy_gettext = function(){
clipboardswfdata = document.getElementById('test_text').value;
//alert(clipboardswfdata);
window.document.clipboardswf.SetVariable('str', clipboardswfdata);
}
var floatwin = function(){
alert('復(fù)制成功!');
//document.getElementById('clipinner').style.display = 'none';
}
</script>
</head>
<body>
<textarea id="test_text" rows="15" cols="100">文本內(nèi)容.......</textarea>
<div id="clipboard_content">
<div class="my_clip_button"><span class="clipinner" id="clipinner">復(fù)制代碼到剪切板
<embed name="clipboardswf" class="clipboardswf" id="clipboardswf" onmouseover="setcopy_gettext()" devicefont="false" src="./_clipboard.swf" menu="false" allowscriptaccess="sameDomain" swliveconnect="true" wmode="transparent" type="application/x-shockwave-flash" height="20" width="100">
</span>
</div>
</div>
</body>
</html>
clipboard.swf 的下載地址:http://www.jeffothy.com/weblog/uploads/clipboard.php
但是 Flash 10 時(shí)代,上面的方法已經(jīng)不行了。
因?yàn)閒lash10中規(guī)定了只有在swf上進(jìn)行了真實(shí)的操作(比如鼠標(biāo)點(diǎn)擊)才能訪問剪切板,而上述方法只是使用了一個(gè)隱藏的swf文件,通過javascript操作flash的剪貼板,用戶并沒有對(duì)swf文件進(jìn)行真實(shí)的操作,因此這個(gè)方法也就失效了。
那么如何解決這個(gè)“真實(shí)操作”的問題呢?可以使用一個(gè)JavaScript庫:Zero Clipboard,利用這個(gè)js庫可以支持利用flash 10 實(shí)現(xiàn)復(fù)制到剪貼板。這個(gè)方法原理是在一個(gè)透明的flash(對(duì)用戶來說是不可見的)上覆蓋一個(gè)dom元素比如button或div,當(dāng)點(diǎn)擊這個(gè)dom時(shí),實(shí)際點(diǎn)擊的是flash,從而訪問flash的剪貼板。
以下是調(diào)試好的例子:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " <html xmlns=" <head>
<title>Zero Clipboard Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="ZeroClipboard.js"></script>
<script type="text/javaScript">
var clip = null;
function $(id) { return document.getElementById(id); }
function init() {
clip = new ZeroClipboard.Client();
clip.setHandCursor(true);
clip.addEventListener('mouseOver', function (client) {
// update the text on mouse over
clip.setText( $('fe_text').value );
});
clip.addEventListener('complete', function (client, text) {
//debugstr("Copied text to clipboard: " + text );
alert("該地址已經(jīng)復(fù)制,你可以使用Ctrl+V 粘貼。");
});
clip.glue('clip_button', 'clip_container' );
}
</script>
</head>
<body onLoad="init()">
<input id="fe_text" cols="50" rows="5" value="復(fù)制內(nèi)容文本">
<span id="clip_container"><span id="clip_button"><strong>復(fù)制</strong></span></span>
</body>
</html>
點(diǎn)擊下載該類庫: http://www.dbjr.com.cn/jiaoben/24961.html
調(diào)試時(shí)請(qǐng)上傳到網(wǎng)站,本地直接打開flash會(huì)出錯(cuò)的,沒權(quán)限。zeroClipboard.js文件里moviePath屬性是falsh的地址,就是目錄下的那個(gè)ZeroClipboard.swf存放的地址位置。
這種js復(fù)制內(nèi)容到剪貼板的方案可支持瀏覽器:Firefox / IE / opera / chorme / safari 所有瀏覽器!
相關(guān)文章
JS實(shí)現(xiàn)使用POST方式發(fā)送請(qǐng)求
這篇文章主要為大家詳細(xì)介紹了JS實(shí)現(xiàn)使用POST方式發(fā)送請(qǐng)求,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08
調(diào)試Javascript代碼(瀏覽器F12及VS中debugger關(guān)鍵字)
目前,常用的瀏覽器IE、Chrome、Firefox都有相應(yīng)的腳本調(diào)試功能下面我就介紹如何在瀏覽器/VS中調(diào)試我們的JS代碼,感興趣的你可不要走開啊,希望本文對(duì)你有所幫助2013-01-01
使用KrpanoToolJS在瀏覽器切圖的實(shí)例詳解
這篇文章主要介紹了使用KrpanoToolJS在瀏覽器切圖的實(shí)例詳解,大概是需要在瀏覽器中將全景圖轉(zhuǎn)為立方體圖、多層級(jí)瓦片圖,通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-10-10
手動(dòng)實(shí)現(xiàn)js短信驗(yàn)證碼輸入框
本文記錄一下自己手動(dòng)實(shí)現(xiàn)的一個(gè)前端常見的短信驗(yàn)證碼輸入組件,從需求到實(shí)現(xiàn)逐步優(yōu)化的過程。具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06
與ClientWidth有關(guān)的一點(diǎn)資料
與ClientWidth有關(guān)的一點(diǎn)資料...2006-08-08

