ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScriptでコピー機能を実装

JavaScriptでコピー機能を実装

高洛峰
高洛峰オリジナル
2016-11-28 11:32:181236ブラウズ

ブラウザの互換性を無視して、コピー関数の各ブラウザのサポートを確認してください:

1. IE ブラウザには 3 つの解決策があり、コードは次のとおりです:

[javascript]

function copy(txtid) {

var txtObj = document.getElementById(txtid);

if(window.clipboardData){ // このオブジェクトは IE のみがサポートしており、Firefox と chrome はサポートしていません

// 1. ClipboardData オブジェクトを介してコピーします

// window.clipboardData.clearData();

B //txtObj.Select ();

//document.exec command 18); // IE のみがサポートし、Firefox は文法エラーを報告し、Chrome の実行結果は false を返します (サポートされていません) )

// 3、TextRange オブジェクトを通じてインスタント コピーを実現します。最初にコンテンツを選択する必要はありません

txtObj.createTextRange().execCommand("Copy");

function copy(txtid){

var txtObj = document .getElementById(txtid);

if(window.clipboardData){ // このオブジェクトは IE のみがサポートしており、Firefox と chrome はサポートしていません

//1。 object

//window.clipboardData.clearData() ;

//window.clipboardData.setData("Text",txtObj.value);

//2. ドキュメント オブジェクトをコピーします。最初に中国語を選択します。 text を入力し、コピー コマンドを実行します

//txtObj.select ();

//document.execCommand("Copy"); // IE でのみサポートされており、Firefox は構文エラーを報告し、Chrome の実行結果が返されます。 false (サポートされていません)

//3. TextRange オブジェクトを使用したリアルタイムのコピー: 最初にコンテンツを選択する必要はありません

txtObj.createTextRange().execCommand("Copy");

}

}

2. Firefox、インターフェイス メソッドを通じて実装されています。Firefox はセキュリティ上の理由から、17 以降のバージョンではこのインターフェイスが閉じられ、バージョン 17 以前で利用可能になります。コードは次のとおりです。

[javascript]

var Clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interface.nsIClipboard); Components.classes ['@mozilla.org/widget/clipboard;1'].createInstance(Components.interface.nsIClipboard); 3. Chrome は、セキュリティ上の理由により、ユーザーにクリップボード操作を提供しません。コピー機能のサポートがブラウザー間で均一ではないことがわかります。

Zero Clipboard Library

jhuckaby によって書かれた Zero Clipboard js ライブラリ。Flash を使用してコンテンツをクリップボードにコピーします。ブラウザに Flash プラグインが搭載されている限り、ActionScript を使用して JavaScript の欠点を防ぎ、ブラウザ間のコピーの互換性の問題を解決できます。

Zero Clipboard の実装原理: Zero Clipboard は最初に Flash オブジェクトのラベルを生成し、このようにして、透明な Flash をコピー ボタン上に浮かせることができます。 、必要なコンテンツが Flash に転送され、Flash 経由でシステム クリップボードにコピーされます。

Zero Clipboard の使用方法

注: Flash 実装に基づいているため、セキュリティ上の理由から、Flash は Web コンテナ (Apache、Tomcat など) で実行する必要があります。をロードすると、ボタンは一時停止アニメーションの現象に似ています。Flash の設定を右クリックすると、ZeroClipboard.swf が信頼できる場所に追加されるようですが、試してみました。まだ動作しません。ローカルブラウザにも問題がある可能性があります。

1> Zero Clipboard の圧縮パッケージをダウンロードし、解凍して、ZeroClipboard.js と ZeroClipboard.swf の 2 つのファイルをプロジェクトに配置します。次のコード: ;

注: ZeroClipboard.js と ZeroClipboard.swf は同じパスに配置する必要があります。同じパスにない場合は、ZeroClipboard.setMoviePath() を使用して設定できます。

3>次のようにコードをコピーします:

[javascript]

var Clip = new ZeroClipboard.Client() // 新しいクリップオブジェクトを作成します

clip.setHandCursor( true ); // 設定 マウスはハンドタイプです

clip.setText("hello,world"); use using using ' ' s's's' ‐ ‐ ‐ ‐ ‐ボタン、パラメーターはボタン要素の ID であり、ボタンをクリックしてコピーできます

var Clip = new ZeroClipboard.Client(); //新しいクリップオブジェクトを作成します

clip.setHandCursor(true); コピーされたテキストはテキストボックスの値になります

clip.glue("copy-botton") ; // クリップのボタンを登録します。パラメーターはボタン要素の ID です。ボタンをクリックしてコピーします

4>Zero Clipboard 一般的に使用される方法で、ソース コードを直接表示することをお勧めします:

reposition( ): ページサイズが変わったときにFlashボタンがずれないようにするため

Hide(): Flashボタンを非表示にする

show(): Flashボタンを表示する

setCSSEffects(): の問題を解決するFlash オクルージョン ボタン スタイルの失敗 (:hover を .hover に変更)。

5>ゼロ クリップボード共通イベント。イベント ハンドラー関数は addEventListener():

load: フラッシュ ボタン読み込みイベント

MouseOver: マウス移動上イベント

MouseOut: マウス移動下イベント

MouseDown :マウスプレスイベント

MouseUp: マウスリリースイベント

complete: コピー成功イベント

jquery.zclip ライブラリ

ZeroClipboard はネイティブ JavaScript に基づいているため、jquery.zclip は jQuery を使用して Zero Clip を実装しますカプセル化の場合、プロジェクトで jQuery がすでに使用されている場合は、それを使用することをお勧めします。jquery.zclip の方がサイズが小さくなります。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。