проблема с ZeroClipboard добавления всплывающей подсказки - PullRequest
3 голосов
/ 08 мая 2011

Я пытаюсь использовать 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();
});

1 Ответ

1 голос
/ 28 июня 2011

Почему вы хотите, чтобы это происходило при наведении мыши?Я не уверен, поддерживает ли это 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 к экземпляру clip, а не вызов clip.setText для вашего события мыши jQuery.

...