ZeroClipboard:swf加载但无法正常工作

时间:2013-09-05 10:29:20

标签: javascript flash zeroclipboard

ZeroClipboard不起作用,它不会抛出任何错误(javascript控制台)。

该网站托管在localhost上运行的HTTPS网络服务器上。网站和SWF都由同一台服务器通过HTTPS提供。

SWF已加载并正确定位在按钮上(ID:testButton)。右键单击该按钮时,将显示闪存上下文菜单(关于Adobe Flash Player 11.7 ...)。

然而,所有事件,甚至“加载”都没有被解雇。

我现在正在为两天月份解决这个问题,我找不到解决方案。

其他信息:

  • ZeroClipboard版本:v1.1.7,也尝试过v1.2.0-beta.3,编辑:这也适用于v1.3.1
  • 浏览器:Mac OSX上的Chromium 28
  • 官方test website正在运作

这是我的代码:

var clip = new ZeroClipboard(document.getElementById("testButton"), {
    moviePath: "media/zeroclipboard.swf"
});
clip.on("dataRequested", function(client, args) {
    client.setText("Copy me!");
});
clip.on("load", function(client) {
    alert("movie is loaded");
});
clip.on("complete", function(client, args) {
    alert("Copied text to clipboard: " + args.text);
});
clip.on("mouseover", function(client) {
    alert("mouse over");
});
clip.on("mouseout", function(client) {
    alert("mouse out");
});
clip.on("mousedown", function(client) {
    alert("mouse down");
});
clip.on("mouseup", function(client) {
    alert("mouse up");
});

5 个答案:

答案 0 :(得分:6)

几个月后我终于找到了解决方案:

ZeroClipboard在浏览器的CommonJS环境中不会开箱即用,即使它说它也是如此。

对此的修复是将模块范围变量(例如ZeroClipboard)分配给全局窗口对象:

ZeroClipboard = require("zeroclipboard");
window.ZeroClipboard = ZeroClipboard;

我创建了一个错误报告: https://github.com/zeroclipboard/zeroclipboard/issues/332

答案 1 :(得分:1)

我不确定这是否会有所帮助〜但是你尝试过改变你的moviePath吗? 像这样:

{moviePath:"//YOURSERVER/path/ZeroClipboard.swf"}

我试图在整个月内使用ZeroCLipboard,大部分时间我都失败了,因为我在某种程度上错了路径......

祝你好运〜

答案 2 :(得分:0)

如果您完全解压缩项目,.SWF文件位于此处:

moviePath: "../zeroclipboard.swf"

答案 3 :(得分:0)

我在ZeroClipboard.min.js上解决了这一行的编辑问题

return a+"ZeroClipboard.swf"

为:

return "//YOUR/PATH/TO/ZeroClipboard.swf"

答案 4 :(得分:0)

我想首先指出找到这个问题的其他人:ZeroClipboard在本地查看文件时不起作用,即file://path/index.html。这是因为Adobe的安全策略阻止了file://协议。

https://stackoverflow.com/a/9450359/710377

如果您已经完全使用Node.js(甚至只是用于包管理器),您可以在命令行上启动基本Web服务器,以使用npm install http-server -g和{{1}来测试ZeroClipboard (假设npm的东西已经在你的路径上了。)