ZeroClipboardプラグインでマルチブラウザコピー機能を実装(Firefox、Chrome、IE6対応)_JavaScriptスキル

WBOY
リリース: 2016-05-16 16:38:29
オリジナル
1509 人が閲覧しました

ただし、公式の紹介文にはこのプラグインはIE6に対応していないことが明記されているので注意が必要です。以下ではマルチインスタンス化のZero Clipboardコピー機能の実装とIE6対応の書き込み方法を紹介します。

まず ZeroClipboard をダウンロードします http://www.jb51.net/jiaoben/24961.html

<style type="text/css">
 body { font-family:arial,sans-serif; font-size:9pt; }
 .copyit {text-align:center; border:1px solid #FD6001; background-color:#ED730B; margin:10px; padding:2px 5px; cursor:pointer; font-size:12px; border-radius:3px;}
 .copyit.hover { background-color:#FD6001;}.copyit.active { background-color:#d25102;}/*鼠标hover效果,实为调用setCSSEffects()方法*/
 .copy_info{width:260px;height:100px;border:1px solid #ccc;padding:5px;}
</style>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript" src="/js/ZeroClipboard/ZeroClipboard.js"></script>
<div class="clip_container">
<textarea id="fe_text" cols=50 rows=5 class="copycnt">第1个被复制的内容!!!</textarea>
<b class="copyit">复制内容</b>
</div>
<br/>
<div class="clip_container">
<textarea id="fe_text" cols=50 rows=5 class="copycnt">第2个被复制的内容!!!</textarea>
<b class="copyit">复制内容</b>
</div>
<script type="text/javascript">
var clip = null;
function copyThis() {
	if($.browser.version==6.0){
		//针对ie6
		$('.copyit').bind("click",function(){
		var code=$(this).parents(".clip_container").find(".copycnt").text();
		window.clipboardData.setData("Text",code);
		alert('被复制的内容:\n'+code);
	  })
	  return;
	}
	ZeroClipboard.setMoviePath("http://img.jb51.net/js/scripts/clipboard.swf'");//如果ZeroClipboard.js, ZeroClipboard.swf放在同一目录下,可省略这句;
	clip = new ZeroClipboard.Client();
	$('.copyit').mouseover( function() {
	 var code=$(this).parents(".clip_container").find(".copycnt").text();
	 clip.setText(code);
	 if (clip.div) {//已创建过包含flash的父层div,则鼠标hover时重新定位flash层的位置
		 //clip.receiveEvent('mouseout', null);
		 clip.reposition(this);
	 }else{
		clip.glue(this)};
	 //clip.receiveEvent('mouseover', null);
	} );
	clip.addEventListener( 'complete', function(client, text){
	 alert("被复制内容:\n"+text);
	});
}
copyThis();
</script>
<textarea style="width:300px;height:300px;">
粘贴复制的内容到这里试试!!
</textarea>
ログイン後にコピー

上記の実装方法では、ie6 が wi​​ndow.clipboardData.setData を使用してコピー機能を実装することを除き、他のブラウザーは Zero Clipboard プラグインを使用してコピー機能を実装します。

このプラグインを使用する際に注意すべき点:

1. 上記の ZeroClipboard.js と ZeroClipboard.swf は同じパスに配置する必要があります。同じパスにない場合は、ZeroClipboard.setMoviePath(“Flash path”); を使用して ZeroClipboard.swf アドレスを設定できます。

2. setCSSEffects() メソッドの分析: マウスがボタン上に移動するかクリックすると、Flash ボタンの障害により、CSS の「:hover」、「:active」、およびその他の疑似クラスがコピーボタン自体が無効である可能性があります。 setCSSEffects() メソッドはこの問題を解決します。まず、疑似クラスを次のようなクラスに変更する必要があります:

コードをコピーします コードは次のとおりです:

.copyit:hover{
境界線の色:#FF6633;
}
// 「:hover」を次の「.hover」に変更する必要があります
.copyit.hover{
境界線の色:#FF6633;
}

3. getHTML() メソッドの分析: Zero Clipboard 添付メソッドを使用せずに自分で Flash をインスタンス化したい場合は、このメソッドが役に立ちます。 2 つのパラメータ、つまり Flash の幅と高さを受け入れます。返されるのはFlashに対応したHTMLコードです。例:
var html = Clip.getHTML( 150, 20 );

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート