我就是拿不到这个东西。ZeroClipboard 应该如何工作?为什么需要将 flash-element 移动到复制的文本上?
我读过这个东西:http ://code.google.com/p/zeroclipboard/wiki/Instructions
有人可以为我提供一个简短的片段,当用户单击链接时,可以将变量中的文本复制到用户剪贴板。这甚至可能吗?我不在乎,如果它不适用于所有浏览器(例如 IE6)。
我正在使用 jQuery。
我就是拿不到这个东西。ZeroClipboard 应该如何工作?为什么需要将 flash-element 移动到复制的文本上?
我读过这个东西:http ://code.google.com/p/zeroclipboard/wiki/Instructions
有人可以为我提供一个简短的片段,当用户单击链接时,可以将变量中的文本复制到用户剪贴板。这甚至可能吗?我不在乎,如果它不适用于所有浏览器(例如 IE6)。
我正在使用 jQuery。
您链接到的页面上给出的“最小示例”代码(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 元素上的不可见覆盖层来“诱骗”用户点击 Flash。
我会注意到,虽然复制到用户剪贴板的特定示例可能是良性的,但这种方法让我很困扰,因为不难想象隐藏的 flash 元素会做更多恶意的事情。
一个稍微复杂的 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"\" />";
?>
当我的身体区域有标签时,此代码仅在我的设置中与 chrome 一起使用
<script type="text/javascript" src="js-file-doesnt-exists-404.js"></script>
<div>
......
some stuff here
......
....
</div>
...some more stuff....
<the button>
....
当文件包含被删除时,按钮不起作用....真的很奇怪
当前版本的 ZeroClipboard 实际上包含一个错误,使用 JacobM 建议的脚本会导致 JS 错误 - 在以下场景中:
为了避免导致错误,应该使用 mouseover 事件侦听器来设置文本:
<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>