3

Zeroclipboard http://code.google.com/p/zeroclipboard/を使用してクリップボードにコピーし、フラッシュ上にマウスを置いたときにツールチップを追加しようとしています。しかし、それは機能していないようです。

私のhtmlコード:

<div rel="<?php echo $url;?>" class="cp-code">copied code</div>
<div class="test" style="display: none; border: 1px solid #ccc; padding: 8px;">click copy,test,test</div>

私の js コード: jquery ライブラリを追加しました。

ZeroClipboard.setMoviePath("http://example.com/js/ZeroClipboard.swf");
var clip = null;
var url = '';

function init() {
    clip = new ZeroClipboard.Client();
    clip.setHandCursor( true );

    $('.cp-code').mouseover( function() {
        clip.setText(this.innerHTML);
             $('test').style.display = 'block';
        if (clip.div) {
            clip.receiveEvent('mouseout', null);
            clip.reposition(this);
        } else {
                        clip.glue(this);
                }
        clip.receiveEvent('mouseover', null);
        url = $(this).attr('rel');
    });

    clip.addEventListener('mouseUp', function(client) {
        window.open(url);
    });
  clip.addEventListener('mouseOut', function (client) {
 $('test').style.display = 'none';
   });

    }

$(document).ready(function() {
    init();
});
4

1 に答える 1

1

なぜマウスオーバーで発生させたいのですか?ZeroClipboard がそれをサポートしているかどうかはわかりません。

ZeroClipboard の実装が通常とは少し異なるため、最初に ZeroClipboard を使用したとき、これを理解するのに少し時間がかかりました。ただし、clip.setText だけを呼び出すことはできません。クリップの実装をコントロールに「接着」する必要があります。また、jQuery オブジェクトも使用できません。実際の DOM オブジェクトに接着する必要があります。

たとえば、次のようになります。

var cpCode = $('.cp-code');
cpCode.each(function()
{
    clip = new ZeroClipboard.Client(); //you can set the movie path here too
    clip.glue($(this)[0]); // The [0] accesses the actual DOM object rather than the jQuery object
    clip.setText($(this).html();
});

したがって、要素をクリックすると、テキストがコピーされます。例で他のことをしている場所がわかりますが、欠落している要素は、クリップを呼び出すのではなく、DOMオブジェクトをクリップのインスタンスに接着していると思いますjQuery マウスオーバー イベントの .setText 。

于 2011-06-28T16:28:42.370 に答える