Search

1/13/2008

copy to clipboard

以下的 code 以及 swf 檔都來自 syntaxhighlighter,我把這部分的 code 拔出來放在 http://chunghe.googlecode.com/svn/trunk/project/copy.to.clipboard/
複製到剪貼簿在 IE 下是使用 IE 獨有的window.clipboardData.setData('text', text);,在FF下面沒有對應的方法,所以使用了 flash 來替我們完成。另外比較有趣的是要如何透過 flash 來達成一些原本無法達成的 cross-browser 的動作。
clipboard.swf 的 source code


if (clipboard.length)
{
System.setClipboard(clipboard);
} // end if


function copyToClipboard( text ){

var htmlEncode = function(string) {
return string.replace(/[<&>]/g, function(c) { return {'<': '<', '&': '>', '>': '&'}[c] })
}

var config = {
'swf': 'http://chunghe.googlecode.com/svn/trunk/project/copy.to.clipboard/clipboard.swf'
}

text = htmlEncode(text);
if(window.clipboardData){
window.clipboardData.setData('text', text);
}
else{
if(!document.getElementById('flashcopier')){
flashcopier = document.createElement('div');
flashcopier.id = 'flashcopier';
document.body.appendChild(flashcopier);
}
flashcopier.innerHTML = '<embed src="' + config.swf + '"
FlashVars="clipboard='+encodeURIComponent(text)+'" width="0" height="0" type="application/x-shockwave-flash"></embed>';
}
alert('done');
}

沒有留言: