2014-09-29 6 views
5

Mein erstes Ziel ist es, ein Bild aus der Zwischenablage eingefügt. Aber ich habe Probleme, das Paste Event zu bekommen.JavaScript einfügen Ereignis funktioniert gut in Chrome, aber nicht Firefox

In JSFiddle, wo ich das Problem reproduziert wird, enthält die HTML nur ein div:

<div style="width: 200px; height: 200px; background: grey" id="pasteTarget" > </div> 

Der JavaScript bindet zuerst meine Funktion handlePaste(), um die Paste Ereignis.

Diese Funktion soll aufgerufen werden, wenn der Benutzer Strg + V drückt oder in den Menüs des Browsers "Einfügen" auswählt.

Wichtig: Diese Funktion greift auf e.clipboardData zu, um den Inhalt der Zwischenablage zu erhalten. Wenn Sie beispielsweise die Taste PrtScn und dann Strg + V drücken, senden Sie ein Druckbild an die Methode handlePaste. Der letzte Alarm zeigt "image/png" wenn es funktioniert.

Chrome v37: das JsFiddle funktioniert gut. Firefox v32: Die Methode handlePaste() wird nicht aufgerufen, die erste Warnung wird nicht angezeigt.

Der jsFiddle Code: http://jsfiddle.net/demeylau/ke44bufm/1/

+0

Ich bezweifle, dass Sie alles in ein nicht bearbeitbares Element einfügen können – ovi

+0

@Ovi - würde es in Chrome arbeiten, weil eine Art von Bug in Chrome? –

Antwort

2

Soweit ich sagen kann, dann werden Sie das Einfügen separat per Browser Agent behandeln müssen. Joshua Gross deckt viele der Feinheiten der Paste Ereignis in diesem Artikel: Paste Wasteland

Firefox noch stumpf sein mag, aber es ist möglich, indem man die Daten aus der Zwischenablage als Blob die Bilddaten als Datei zu lesen. (siehe das Postscript in Gross 'Artikel) Das ist ziemlich viel unpacked Legacy-Code in Browsern, die OS-Ereignisse auf etwas unterschiedliche Weise behandeln und fasst kurz zusammen, warum wir die meisten neueren Funktionen in Sachen WebAPI standardisiert haben. Ich hoffe, das hilft.

+0

Es gibt auch einen Ticker darüber [Problem in FF] (https://bugzilla.mozilla.org/show_bug.cgi?id=439189). Aber es ist immer noch nicht gelöst und letzte Aktualisierung war im Jahr 2014. – muffir