2013-09-05 12 views
11

ZeroClipboard non funziona e non genera errori (console javascript).ZeroClipboard: swf caricato, ma non funzionante

Il sito Web è ospitato su un server Web HTTPS in esecuzione su localhost. Sia il sito Web che il file SWF vengono offerti tramite HTTPS dallo stesso server.

Il file SWF viene caricato e posizionato correttamente sul pulsante (con ID: testButton). Facendo clic con il pulsante destro del mouse sul pulsante, viene visualizzato il menu di scelta rapida del flash (Informazioni su Adobe Flash Player 11.7 ...).

Tuttavia, nessuno degli eventi, nemmeno "carico", viene licenziato.

Sto lavorando su questo problema per due giorni mesi e non riesco a trovare una soluzione.

Ulteriori informazioni:

  • ZeroClipboard versione: v1.1.7, anche provato v1.2.0-beta.3, edit: Questo succede anche con v1.3.1
  • browser: Chromium 28 su Mac OSX
  • ufficiale test website sta lavorando

Ecco il mio codice:

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

Sto avendo lo stesso identico problema. Caricamenti SWF (posso vedere i 200 strumenti di sviluppo di Chrome) ma "caricare" non si innesca mai. –

risposta

6

Dopo mesi ho finalmente trovato una soluzione:

ZeroClipboard non funziona in ambienti CommonJS nel browser, anche se dice che funziona.

La correzione di che sta assegnando la variabile portata modulo (ad es ZeroClipboard) all'oggetto finestra globale:

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

ho creato un bug report su questo: https://github.com/zeroclipboard/zeroclipboard/issues/332

+0

Se la correzione non funziona, assicurati che 'window.require' esista, ad es. assegnandolo con 'window.require = require;' in uno dei tuoi moduli. Queste due correzioni sono molto brutte, ma al momento sono l'unica soluzione. – squarebracket

1

Non sono sicuro se questo mi sarebbe d'aiuto ~ ma hai provato a cambiare un po 'il tuo filmPath? Ti piace questa:

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

stavo cercando di utilizzare ZeroCLipboard in tutto il mese e la maggior parte del tempo non riesco perché ho avuto la strada sbagliata in un modo o nell'altro ...

Buona fortuna comunque ~

+2

Il swf è caricato correttamente (può essere visto negli strumenti di sviluppo del browser), ma l'evento di caricamento non viene attivato. – squarebracket

0

Se si estrae il progetto esattamente, il file .swf si trova qui:

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

Ho spostato il swf in un'altra directory. Il swf è caricato correttamente (può essere visto negli strumenti di sviluppo del browser), ma l'evento load non viene attivato. – squarebracket

0

ho risolto modificando questa linea su ZeroClipboard.min.js

return a+"ZeroClipboard.swf" 

a:

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

Vorrei solo far notare a chiunque abbia trovato prima questa domanda: ZeroClipboard non funziona quando si guarda il file localmente, ovvero file://path/index.html.Questo a causa delle politiche di sicurezza di Adobe che bloccano il protocollo file://.

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

Se stai già utilizzando Node.js a tutti (anche solo per il gestore di pacchetti) si può girare un server web di base sulla riga di comando per verificare ZeroClipboard con npm install http-server -g e http-server /path/ (assumendo che roba di NPM è già sul tuo percorso).