2013-09-05 35 views
11

ZeroClipboard nie działa i nie powoduje żadnych błędów (konsola javascript).ZeroClipboard: plik SWF jest załadowany, ale nie działa.

Strona jest hostowana na serwerze internetowym HTTPS działającym na localhost. Zarówno strona internetowa, jak i SWF są obsługiwane przez HTTPS przez ten sam serwer.

Plik SWF jest poprawnie załadowany i umieszczony nad przyciskiem (z identyfikatorem: testButton). Po kliknięciu prawym przyciskiem myszy pojawi się menu kontekstowe flash (About Adobe Flash Player 11.7 ...).

Jednak żadne ze zdarzeń, nawet "obciążenie", nie zostanie wyrzucone.

Pracuję nad tym problemem dla dwa dni miesięcy teraz i nie mogę znaleźć rozwiązania.

Dodatkowe informacje:

  • ZeroClipboard wersja: v1.1.7, również próbował v1.2.0-beta.3, edit: Dzieje się tak również z v1.3.1
  • Przeglądarka: Chromium 28 na Mac OSX
  • Dziennik test website pracuje

Tu jest mój kodu:

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

Mam dokładnie ten sam problem. Ładunki SWF (widzę 200 w narzędziach programistycznych Chrome), ale 'load' nigdy się nie uruchamia. –

Odpowiedz

6

Po miesiącach w końcu znalazłem rozwiązanie:

ZeroClipboard nie działa natychmiast po uruchomieniu w środowiskach CommonJS w przeglądarce, nawet jeśli tak jest.

Poprawkę dotyczącą który jest przypisanie zmiennej zakres moduł (np ZeroClipboard) do globalnego obiektu okna:

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

stworzyłem raport o błędzie na ten temat: https://github.com/zeroclipboard/zeroclipboard/issues/332

+0

Jeśli poprawka nie działa, upewnij się, że istnieje 'window.require', np. przez przypisanie go do 'window.require = require;' w jednym z twoich modułów. Te dwie poprawki są bardzo brzydkie, ale w tej chwili są jedynym rozwiązaniem. – squarebracket

1

Nie jestem pewien, czy to pomogłoby, ale czy próbowałeś trochę zmienić swoją stronę MoviePath? Jak to:

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

starałem się używać ZeroCLipboard na cały miesiąc i większość czasu mi się nie uda, bo mam złą ścieżkę w taki czy inny sposób ...

Powodzenia jakikolwiek ~

+2

Plik swf jest poprawnie załadowany (można go zobaczyć w narzędziach programistycznych przeglądarki), ale zdarzenie load nie uruchamia się. – squarebracket

0

Jeśli wyodrębnić projekt dokładnie, plik SWF znajduje się tutaj:

moviePath: "../zeroclipboard.swf" 
+1

Przeniesiłem plik SWF do innego katalogu. Plik swf jest poprawnie załadowany (można go zobaczyć w narzędziach programistycznych przeglądarki), ale zdarzenie load nie uruchamia się. – squarebracket

0

rozwiązałem edytując tę ​​linię na ZeroClipboard.min.js

return a+"ZeroClipboard.swf" 

do:

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

Chciałbym zwrócić uwagę na każdego, kto pierwszy znajdzie to pytanie: ZeroClipboard nie działa, gdy patrzy się na plik lokalnie, tj. file://path/index.html.Dzieje się tak, ponieważ zasady bezpieczeństwa firmy Adobe blokują protokół file://.

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

Jeśli używasz już node.js w ogóle (nawet tylko dla menadżera pakietów) można rozpędzają podstawowy serwer WWW w wierszu polecenia, aby przetestować ZeroClipboard z npm install http-server -g i http-server /path/ (przy założeniu, że rzeczy takie są już na twojej ścieżce).