12

私はこれを手に入れることができません。ZeroClipboard はどのように動作するはずですか? コピーしたテキストの上にフラッシュ要素を移動する必要があるのはなぜですか?

私はこのことを読みました: http://code.google.com/p/zeroclipboard/wiki/Instructions

ユーザーがリンクをクリックしたときに、変数内のテキストをユーザーのクリップボードにコピーできるようにする短いスニペットを提供してもらえますか。これは可能ですか?すべてのブラウザー (IE6 など) で動作しなくてもかまいません。

私はjQueryを使用しています。

4

4 に答える 4

8

リンク先のページ(http://code.google.com/p/zeroclipboard/wiki/Instructions#Minimal_Example)に記載されている「最小限の例」のコードは、希望どおりのようです。ここにコピーして変更し、テキストを変数に入れてからクリップボードにコピーする方法を示しました。これは、あなたが興味を持っていることだからです。実際には、おそらくやりたいことはclip.setText()ページが最初に読み込まれた時点で、コピーするテキストがわからない場合があるため、関数内でパーツを呼び出します。

<html>
<body>
        <script type="text/javascript" src="ZeroClipboard.js"></script>

        <div id="d_clip_button" style="border:1px solid black; padding:20px;">Copy To Clipboard</div>

        <script language="JavaScript">
                var clip = new ZeroClipboard.Client();
                var myTextToCopy = "Hi, this is the text to copy!";
                clip.setText( myTextToCopy );
                clip.glue( 'd_clip_button' );
        </script>
</body>
</html>

flash要素は「コピーされたテキストの上」にある必要はありません。ユーザーに操作させたいDOM要素(おそらくクリックするボタン)に「接着」する必要があります。その理由は、Javascriptがクリップボードにアクセスできないため、代わりにFlashを使用する必要があるためです。ただし、Flashはユーザーのクリックに応答してのみユーザーのマシンで動作できます。そのため、ユーザーを「だまして」Flashをクリックさせ、HTML要素の上に非表示のオーバーレイを作成します。

ユーザーのクリップボードにコピーする特定の例はおそらく無害ですが、隠されたフラッシュ要素がより悪意のあることをしていることを想像するのは難しいことではないので、このアプローチは私を悩ませます。

于 2010-05-10T18:05:26.530 に答える
3

少し複雑な jquery の例。ときはテキストをコピー

  <script language="JavaScript">
            ZeroClipboard.setMoviePath('zeroclipboard/ZeroClipboard.swf');
        $(document).ready(function(){
              $(".clickme").each(function (i) {
                    var clip = new ZeroClipboard.Client();

                    var myTextToCopy = $(this).val();
                    clip.setText( myTextToCopy );
                        clip.addEventListener('complete', function (client, text) {
                 alert("Copied text to clipboard." );
                });
                    clip.glue( $(this).attr("id") );



              });


        });

    </script>



<?php
//these text boxes were in a loop
for($i=0;$i<10;$i++)
    echo "<input type=\"text\" id=\"x$i\" class=\"clickme\" value=\"$value"\" />";

?>
于 2010-12-15T22:24:44.297 に答える
1

このコードは、私の体の領域に次のようなタグがある場合にのみ、chromeと一緒にセットアップで機能します

<script type="text/javascript" src="js-file-doesnt-exists-404.js"></script>
<div>
......
some stuff here
......
....
</div>
...some more stuff....
<the button>
....

file-includeを削除すると、ボタンが機能しなくなります...本当に奇妙です

于 2010-11-27T05:44:03.637 に答える
1

ZeroClipboard の現在のバージョンには、JacobMによって提案されたスクリプトを使用して JS エラーを引き起こすバグが実際に含まれています - 次のシナリオで:

  1. 新しいコンストラクターから返された ZeroClipboard.Client() への参照を作成します。(例: var clip = new ZeroClipboard.Client();)
  2. clip.setText("string"); を実行してテキストを設定します。
  3. DOM を変更する (Flash ムービーまたは祖先要素を非表示にする)
  4. clip.setText("some other string") を実行して、テキストを再度設定します

エラーが発生しないようにするには、代わりにマウスオーバー イベント リスナーを使用してテキストを設定する必要があります。

<html>
<body>
    <script type="text/javascript" src="ZeroClipboard.js"></script>

    <div id="d_clip_button">Copy To Clipboard</div>

    <script language="JavaScript">
        var clip = new ZeroClipboard.Client(),
            myTextToCopy = "Hi, this is the text to copy!";                    
        clip.glue('d_clip_button');
        clip.addEventListener('onMouseOver', clipboardEvent);
        function clipboardEvent() {
            clip.setText( myTextToCopy );
        }
    </script>
</body>
</html>
于 2011-09-08T16:43:28.243 に答える