5

Ursprünglich bezog sich dieser Beitrag auf meine Versuche, ZeroClipboard in Webseiten von und für die Verwendung von meiner Chrome-Erweiterung zu injizieren, aber ich habe das Szenario in einem scheinbar vergeblichen Versuch nach unten und unten dumpfer gemacht identifizieren Sie das Problem, und ich immer noch kann es nicht zur Arbeit bekommen.ZeroClipboard funktioniert einfach nicht

Ich habe sogar Schwierigkeiten the actual, documented "Minimal Example "auf ZeroClipboard eigenen GitHub den Weg zur Arbeit (zugegebenermaßen, ich habe die Quelle modded eigentlich HTML5-gültig sein, aber die genaue Original funktionierte auch nicht). Auch test.html, die im tar.gz Archiv enthalten ist, funktioniert nicht

"Minimal Beispiel":-Code

<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
     <title></title> 
    </head> 
    <body> 
     <input type="button" id="d_clip_button" data-clipboard-text="Copy Me!" value="Copy To Clipboard" /> 
     <script src="ZeroClipboard.js"></script> 
     <script> 
      var clip = new ZeroClipboard(document.getElementById('d_clip_button')); 
     </script> 
    </body> 
</html> 

"Minimal Beispiel": Konsolenausgabe

Uncaught TypeError: object is not a function index.html:11 

Info

  • Der gesamte Inhalt des zeroclipboard-1.0.7.tar.gz archive sind im selben Verzeichnis wie index.html.
  • Die Datei ZeroClipboard.js ist nicht beschädigt/unvollständig und wird korrekt geladen.
  • ich Chrome v24.0.1312.52

 

Entweder ich bin wirklich etwas fehlt, wirklich offensichtlich hier oder ZeroClipboard Dokumentation/Funktionalität ist miserabel.

Antwort

2

Was ich habe gerade herausgefunden:

Das stimmte nicht überein. Ich habe einen ähnlichen Fehler als das ursprüngliche Poster dieser Frage.

Nachdem ich the example from GitHub verwendet habe ich es geschafft.

Fazit:

Entweder verwenden sowohl das Beispiel und Download von Google Code oder (was ich würde es vorziehen), die beide das Beispiel und Herunterladen von GitHub.

+0

Der Link ist kaputt. – user1205577

-1

Zum Laden eines externen Skripts wird ein SCRIPT Element in den Seitenrumpf eingefügt nicht sofort Laden und Ausführen des Skripts. Die appendChild wird sofort zurückgeben, und das Skript wird geladen nach die aktuelle Skriptausführung kehrt von allen Funktionen zurück und geht in den Leerlaufzustand.

Dazu kann die SCRIPT Element onload -Eigenschaft verwendet werden, um einen Code auszuführen, sobald das externe Skript geladen ist.

function inject_zeroClipboard(){ 
    var path_Root_zeroClipboard = chrome.extension.getURL("plugins/zeroClipboard"); 
    var element_Head = document.getElementsByTagName('head')[0]; 
    var element_zeroClipboard = document.createElement("script"); 
    element_zeroClipboard.src = path_Root_zeroClipboard + "/ZeroClipboard.js"; 

    element_zeroClipboard.onload = function() { 
     ZeroClipboard.setMoviePath(path_Root_zeroClipboard + "/ZeroClipboard10.swf"); 
     var clip = new ZeroClipboard.Client(); 
     clip.glue("element_Example"); 
     clip.addEventListener("click", function(){ 
      clip.setText(data_Example); 
     }); 
    }; 

    element_Head.appendChild(element_zeroClipboard); 
} 
+0

Nein, das scheint nicht funktioniert zu haben. Derselbe Fehler. :/ – mythofechelon

+0

Stellen Sie sicher, dass die Datei 'ZeroClipboard.js' nicht beschädigt oder teilweise geladen ist, wodurch verhindert wird, dass das' ZeroClipboard'-Objekt erstellt wird. Überprüfen Sie den Fehler, bevor das 'Uncaught ReferenceError: ZeroClipboard nicht definiert ist '. – Jay

+0

Nein. 'ZeroClipboard.js' ist voll geladen. – mythofechelon

0

Für mich bestand das Problem darin, dass das variable Modul bereits von dem Framework definiert wurde, das ich verwende und nicht wie ZeroClipboard zu verwenden. In der Tat, wenn Sie am Ende der Datei ZeroClipboard.js aussehen, hier ist das, was Sie sehen:

if (typeof module !== "undefined") { 
    module.exports = ZeroClipboard; 
    } else if (typeof define === "function" && define.amd) { 
    define(function() { 
     return ZeroClipboard; 
    }); 
    } else { 
    window.ZeroClipboard = ZeroClipboard; 
    } 

I ersetzt dies nur durch den folgenden Code, um das Problem zu beheben:

window.ZeroClipboard = ZeroClipboard; 
1

Sie müssen den Pfad der sWF-Datei angeben:

var clip = new ZeroClipboard(document.getElementById('d_clip_button'),{moviePath: "/path/ZeroClipboard.swf"}); 
Verwandte Themen