ZeroClipboard: swf загружен, но не работает

ZeroClipboard не работает и не вызывает никаких ошибок (javascript console).

Веб-сайт размещается на веб-сервере HTTPS, работающем на localhost. Как веб-сайт, так и SWF обслуживаются через HTTPS одним и тем же сервером.

SWF загружается и позиционируется правильно над кнопкой (с идентификатором: testButton). При щелчке правой кнопкой мыши на кнопке отображается контекстное меню вспышки (About Adobe Flash Player 11.7...).

Однако ни одно из событий, даже "загрузка", не запускается.

Я работаю над этой проблемой для двух дней месяцев, и я не могу найти решение.

Дополнительная информация:

  • Версия ZeroClipboard: v1.1.7, также проверена v1.2.0-beta.3, edit: Это также происходит с v1.3.1
  • Браузер: Chromium 28 на Mac OSX
  • Официальный тестовый сайт работает

Вот мой код:

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

Ответ 1

Через несколько месяцев я наконец нашел решение:

ZeroClipboard не работает из-за коробки в средах CommonJS в браузере, даже если он говорит, что это делает.

Исправление для этого назначает переменную области видимости модуля (например, ZeroClipboard) глобальному объекту окна:

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

Я создал отчет об ошибке: https://github.com/zeroclipboard/zeroclipboard/issues/332

Ответ 2

Я не уверен, поможет ли это ~, но попробовал ли вы немного изменить свой фильм? Вот так:

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

Я пытался использовать ZeroCLipboard в течение всего месяца, и большую часть времени я терплю неудачу, потому что я так или иначе ошибался в пути...

Удачи в любом случае ~

Ответ 3

Если вы извлекаете проект точно, файл .SWF находится здесь:

moviePath: "../zeroclipboard.swf"

Ответ 4

Я решил изменить эту строку на ZeroClipboard.min.js

return a+"ZeroClipboard.swf"

в

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

Ответ 5

Хотелось бы указать на кого-нибудь другого, кто сначала найдет этот вопрос: ZeroClipboard не работает, если посмотреть на файл локально i.e. file://path/index.html. Это связано с политиками безопасности Adobe, блокирующими протокол file://.

fooobar.com/info/490117/...

Если вы уже используете Node.js(даже для диспетчера пакетов), вы можете развернуть базовый веб-сервер в командной строке, чтобы протестировать ZeroClipboard с помощью npm install http-server -g и http-server /path/ (при условии, что npm уже на вашем пути).