配布ページの説明では、『トリガー要素にdata-clipboard-target属性を追加します。』とありますが、ここではトリガー要素であるボタンのコンテナである div 要素に設定しています。 Advanced Usage では、トリガー要素を直接指定してトリガーの処理の後に、new ClipboardJS であらかじめ作成されたイベントより return される文字列をクリップボードに送る事ができます。
<script> var clipbpardText = ""; $(function(){ var clipboard = new ClipboardJS('#button1' , { text: function(trigger) { return clipbpardText; } }); clipboard.on('success', function(e) { alert("クリップボードにコピーしました"); }); $("#button1").on("click", function(){ clipbpardText = $("#text").val(); }) }); </script> <textarea id="text"></textarea> <button type="button" id="button1">実行</button>
以下では、new ClipboardJS('.clipboard'); で作成されたオブジェクトは、処理が成功した時のイベントの使用方法として実装していますが、作業の妨げになるのであれば削除したほうがいいでしょう。 #src_clipboard の div は、画面外に作成したテキストの一時置き場です。clipboard.js は常にここからテキストを取得してクリップボードに渡します。この手法は、clipboard.js が内部でも使っている手法です。
<!DOCTYPE html> <html> <head> <title>clipboard.js</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js" integrity="sha512-hDWGyh+Iy4Mr9AHOzUP2+Y0iVPn/BwxxaoSleEjH/i1o4EVTF/sh0/A1Syii8PWOae+uPr+T/KHwynoebSuAhw==" crossorigin="anonymous"></script> <script> $(function () { // ********************************************************************** // オブジェクトや内部イベントの構築 // ▼ 内部イベントのパーツ // class に clipboard を持つコンテナ内でイベントが起きた時 // data-clipboard-target の内容の中にあるテキストを取り出してコピーする // コンテナ内のイベントが終わってから処理されるので、 // イベント内で data-clipboard-target の中に必要なテキストをセットする // ********************************************************************** var clipboard = new ClipboardJS('.clipboard'); // コピー完了後の処理( 無くてもよい ) clipboard.on('success', function(e) { alert("クリップボードにコピーしました"); }); // クリップボードにコピーを実行する $("#btn").on("click", function(){ $("#src_clipboard").text( $("textarea").val() ); }); }); </script> <style> html, body { height:100%; } textarea { width: 800px; height: calc(100% - 100px); font-size: 18px; font-weight: 600; } #src_clipboard { position:absolute; left:-1000px; width:900px; white-space:pre-wrap; word-wrap:break-word; } </style> </head> <body> <div id="src_clipboard"></div> <div class="clipboard" data-clipboard-target="#src_clipboard"> <input type="button" value="コピー" id="btn"> </div> <textarea></textarea> </body> </html>
|
【JavaScript ライブラリの最新記事】
- clipboard.js のコピーさせるテキストを自由にダイナミックに渡す方法は、Advanced Usage の text です。
- JavaScript の内部コード文字列を SHIFT_JIS としてダウンロードさせる方法
- 自サイト(logical error を含む)で使用している SyntaxHighlighter のツールバーの問題点をごっそり自前で修正・カスタマイズしました。( その2 / ソースをクリップボード..
- 自サイト(logical error を含む)で使用している SyntaxHighlighter のツールバーの問題点をごっそり自前で修正・カスタマイズしました。( その1 / ソースの表示 )
- ブラウザ上のテキストデータを名前を付けて保存できる FileSaver.js を使って、テーブルのデータを Excel で開ける事を想定した CSV にして PC に保存
- JavaScript のみで、SHIFT_JIS や EUC-JP を UrlEncode に近い Escapeする Escape Codec Library
- JavaScript でクリップボードに文字列をコピーする Clipboard.js の使用方法と注意事項
- Lightbox2 ライブラリの今時の使い方
- Google Visualization API って apikey いらなくなった? / ライブラリロード方法が変わってました
- Lightbox2 で data-title にボタンを埋め込んで、クリックしたら 画像のファイル名を取り出して Lightbox2 を閉じるギャラリーのデモ
- EASELJS を使用した画像の分割と分割されたエリア毎のアニメーション / createjs.Ticker の reset と init はうまく動きませんでした
- EASELJS を使用した画像の縮小とトリミングと角丸マスク / 画像は new Image でイベント処理して画像サイズを取得します
- Three.js r73 での Canvas で平面を飛翔させる為の詳細デモ
- クリスマスに備えて、『雪を降らす snowstorm.js』のカスタマイズ / ダウンロードも何も必要ありません。jQuery も必要ありません
- JavaScript : 誰でもすぐ使える Google 円グラフ(2) : データを Google ドキュメントから取得する
- JavaScript : 誰でもすぐ使える Google 円グラフ
- カラーピッカーのライブラリなのですが、ちょっと雑な作りだったので、修正してリリースです。
- google.load で Yahoo UI のメニューを使う