ブラウザをまたいでのコピー貼り付け
3159 ワード
web開発ではしばしば「クリップボードにコピーする」機能を実現します.この機能は実用的ですが、安全上の問題により、ブラウザの制限が厳しくなり、実現の方法もますます限られてきました.FirefoxはデフォルトではJavascriptを通じて直接にクリップボードを操作することができません.関連の設定を開く必要があります.Javascript技術だけでブラウザを越えるカットボードを実現するのは無理です.今よく使われている方法はJavaScript+Flashを利用して実現します.clipboard.swfは海外で最初に実現されたものです.でも残念ですclipboard.swfは新出来のflash 10で無効です.flash 10ではswfで実際に操作したもの(マウスクリックなど)だけがクリップボードを起動すると規定されています.それに対してclipboard.swf方法のswfは隠れていて、JavaScriptを通じてflashのカットボードを操作して、明らかにswfに対して実際のユーザー操作を行っていません.
これに対して、最近海外で新しい方法が現れました.そして、JavaScriptライブラリhttp://www.jeffothy.com/weblog/clipboard-copy/を専門に作っています.flash映画とJavaScriptインターフェースが含まれています.このflashは透明で(非表示ではない)、ユーザーはその存在を気づかないです.このflashはDOM元素に覆われています.例えば、button、divなど、このDOMをクリックした時、実際にクリックしたのはこのflashです.この作用はflash上の動作でflashのクリップボードを開くことができます.これは実はclickjackingです.
DEMOページ:Zero Clip board
Zero Clip boardプロジェクトのホームページ:http://bowser.macminicolo.net/~jhuckaby/zroclipboard/
ネットで流行っているアリのお母さんの実の出所:http://code.google.com/p/zeroclipboard/
ゼロclipboard
これに対して、最近海外で新しい方法が現れました.そして、JavaScriptライブラリhttp://www.jeffothy.com/weblog/clipboard-copy/を専門に作っています.flash映画とJavaScriptインターフェースが含まれています.このflashは透明で(非表示ではない)、ユーザーはその存在を気づかないです.このflashはDOM元素に覆われています.例えば、button、divなど、このDOMをクリックした時、実際にクリックしたのはこのflashです.この作用はflash上の動作でflashのクリップボードを開くことができます.これは実はclickjackingです.
DEMOページ:Zero Clip board
Zero Clip boardプロジェクトのホームページ:http://bowser.macminicolo.net/~jhuckaby/zroclipboard/
ネットで流行っているアリのお母さんの実の出所:http://code.google.com/p/zeroclipboard/
ゼロclipboard
<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title> by </title>
<script type="text/javascript" src="ZeroClipboard.js"></script>
<script language="JavaScript">
function get(id) { return document.getElementById(id); }
function toClipboard(copy_id,input_id) {
var clip = new ZeroClipboard.Client();
clip.setHandCursor(true);
clip.setText(get(input_id).value);
clip.addEventListener('complete', function (client) {
alert("Copy Ok!");
});
clip.glue(copy_id);
}
</script>
</head>
<body>
<input type="text" id="input_text" />
<input id="copy_button" type="button" value="copy" onmouseOver="toClipboard(this.id,'input_text')" />
<br/>
<input type="text" id="input_text2" />
<input id="copy_button2" type="button" value="copy" onmouseOver="toClipboard(this.id,'input_text2')"/>
<br/>
<input type="text" id="input_text3" />
<input id="copy_button3" type="button" value="copy" onmouseOver="toClipboard(this.id,'input_text3')"/>
</body>
</html>