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 уже на вашем пути).