最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - ZeroClipboard: swf loaded, but not working - Stack Overflow

programmeradmin22浏览0评论

ZeroClipboard doesn't work and it doesn't throw any errors (javascript console).

The website is hosted on a HTTPS webserver running on localhost. Both the website and the SWF are served over HTTPS by the same server.

The SWF is loaded and positioned correctly over the button (with ID: testButton). When right-clicking on the button, the flash context menu (About Adobe Flash Player 11.7...) is shown.

However, none of the events, not even "load", gets fired.

I am working on this problem for two days months now and i can't find a solution.

Additional info:

  • ZeroClipboard version: v1.1.7, also tried v1.2.0-beta.3, edit: This also happens with v1.3.1
  • Browser: Chromium 28 on Mac OSX
  • Official test website is working

Here is my code:

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("plete", 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");
});

ZeroClipboard doesn't work and it doesn't throw any errors (javascript console).

The website is hosted on a HTTPS webserver running on localhost. Both the website and the SWF are served over HTTPS by the same server.

The SWF is loaded and positioned correctly over the button (with ID: testButton). When right-clicking on the button, the flash context menu (About Adobe Flash Player 11.7...) is shown.

However, none of the events, not even "load", gets fired.

I am working on this problem for two days months now and i can't find a solution.

Additional info:

  • ZeroClipboard version: v1.1.7, also tried v1.2.0-beta.3, edit: This also happens with v1.3.1
  • Browser: Chromium 28 on Mac OSX
  • Official test website is working

Here is my code:

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("plete", 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");
});
Share Improve this question edited Feb 8, 2014 at 16:24 squarebrackets asked Sep 5, 2013 at 10:29 squarebracketssquarebrackets 9972 gold badges12 silver badges19 bronze badges 1
  • I'm having the exact same problem. SWF loads (I can see the 200 in Chrome developer tools) but load never triggers. – David Tuite Commented Jan 9, 2014 at 21:30
Add a ment  | 

5 Answers 5

Reset to default 6

After months I finally found a solution:

ZeroClipboard doesn't work out-of-the-box in CommonJS environments in the browser, even it says it does.

The fix for that is assigning the module scope variable (e.g. ZeroClipboard) to the global window object:

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

I created a bug report on this: https://github./zeroclipboard/zeroclipboard/issues/332

I'm not sure if this would help~ but have you tried changing your moviePath a little bit? Like this:

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

I was trying to use ZeroCLipboard in the whole month and most of the time I fail because I got the path wrong in one way or another...

Good luck anyways~

If you extract the project exactly, the .SWF file is located here:

moviePath: "../zeroclipboard.swf"

I solved editing this line on ZeroClipboard.min.js

return a+"ZeroClipboard.swf"

to:

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

Would just like to point out for anybody else who finds this question first: ZeroClipboard does not work when looking at the file locally i.e. file://path/index.html. This is because of Adobe's security policies blocking the file:// protocol.

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

If you're already using Node.js at all (even just for the package manager) you can spin up a basic web server on the mand line to test ZeroClipboard with npm install http-server -g and http-server /path/ (assuming that npm stuff is already on your path).

发布评论

评论列表(0)

  1. 暂无评论