3

コード内に複数の Zeroclipboard インスタンス化を作成する際に問題が発生しています。各インスタンス化は、呼び出された後にポップアップ ウィンドウを起動します。

<a class="xxx" href="popup.url.php" ><span >FRSDE3RD</a>
<a class="xxx" href="popup.url2.php" ><span >FRSDE3RD2</a>
<a class="xxx" href="popup.url3.php" ><span >FRSDE3RD3</a>
$(document).ready(function(){
    ZeroClipboard.setMoviePath( 'path/to/swf/ZeroClipboard.swf' );
    // setup single ZeroClipboard object for all our elements
    clip = new ZeroClipboard.Client();
    clip.setHandCursor( true );

    // assign a common mouseover function for all elements using jQuery
    $('a.xxx').mouseover( function() {
        // set the clip text to our innerHTML
        var url = $(this).attr("href");
        var code = $(this).children('span').html();
        clip.setText( $(this).children('span').html() );//this.innerHTML );

        clip.glue(this);
        clip.addEventListener('onMouseDown', function(){
            clip.reposition(this);
            clip.setText( code );
        });

        clip.addEventListener('onComplete', function(){ 
            clip.reposition(this);
            popUp(url);
        }); 


    });
});

function popUp(URL)
{
    day = new Date();
    id = day.getTime();
    eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=1,scrollbars=1,location=1,statusbar=1,menubar=1,resizable=1,width=1024,height=768,left = 328,top = 141');");
}

クリップボード機能へのコピーの生成に成功しましたが、onMouseUp、onComplete イベントのいずれかを使用してポップアップ機能をトリガーすると、4 ~ 5 個のポップアップのように起動するか、まったく起動しません。

PS jQueryとZeroClipboardを使用してAjax応答をクリップボードにロードする方法からソリューションを適応させようとしましたか? ajax呼び出しの代わりに、クリップボードにコピーし、完了するとポップアップが表示されます...私が言ったように、うまくいきませんでした。

flashblocker を有効にしているときに他にわかったことは、CODE タグをロールオーバーするたびに同じ場所に新しいフラッシュが作成されるということです。これが、クリックすると 3-4 のポップアップが表示される理由の説明かもしれません。さらにロールオーバーすると、さらにポップアップが表示されます。フラッシュが同じ場所に作成されないようにする方法や、ロールアウト時に破棄する方法はありますか?

4

3 に答える 3

14

さらに調査した後、私はこの問題の解決策にたどり着きました。

$("a.xxx").each(function() {
  //Create a new clipboard client
  var clip = new ZeroClipboard.Client();
  clip.setHandCursor( true );

  //Glue the clipboard client to the last td in each row
  clip.glue(this);

  var url = $(this).attr("href");
  //Grab the text from the parent row of the icon
  var code = $(this).children('span').html();    
  clip.setText(code);

  //Add a complete event to let the user know the text was copied
  clip.addEventListener('complete', function(client, text) {
    //alert("Copied text to clipboard:\n" + text);
    popUp(url);
  });
});

これは、他の誰かがこの問題で立ち往生する場合の解決策です。

于 2010-01-29T09:26:55.437 に答える
0

http://www.steamdev.com/zclip/を使用してみてください。jquery に直接アクセスでき、return ステートメントで独自のロジックを使用できます。

jquery.zclip.js のダウンロードを含め、ZeroClipboard.swf を保存します

ここにスニペットがあります:

$(".class-to-copy").zclip({
    path: "assets/js/ZeroClipboard.swf",
    copy: function(){
        return $(this).attr("data-attribute-with-text-to-copy");
    }
});

swf のパスを変更してください。

于 2014-10-05T08:37:02.197 に答える