我正在尝试使用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();
});
答案 0 :(得分:1)
为什么要在鼠标悬停时发生这种情况?我不确定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 mouseover事件上调用clip.setText。