Behandelt Safari das Einfügeereignis korrekt?

8

Ich versuche, Code für Safari zu schreiben, um das Ereignis "Einfügen" zu behandeln, aber es scheint nicht richtig zu funktionieren. Entsprechend der WebKit DOM-Referenz werden oncut , onpaste und oncopy alle mehr oder weniger behandelt, wie es die W3C Clipboard API vorschlägt. Es funktioniert jedoch nicht wie ich es erwarte. Ich kopiere Bilddaten, aber soweit ich es beurteilen konnte, gilt das Problem, das ich habe, für jede Art von Paste. Diese jsfiddle funktioniert problemlos in Chrome, aber nicht in Safari 6.0.4 unter OSX.

%Vor%

Ich habe es erneut mit plain JS versucht. Immer noch keine Freude:

%Vor%

Wenn es ein Problem mit Safari gibt, sollte ich natürlich nicht erwarten, dass jQuery funktioniert. Soweit ich das beurteilen kann, mache ich im zweiten Versuch (einfach) genau das, was die WebKit-Referenz mir vorschlägt, aber es funktioniert überhaupt nicht. Ist das eine bekannte Einschränkung von Safari, oder liegt das Problem zwischen Stuhl und Tastatur?

Update : Es scheint, dass Safari den Arbeitsentwurf der Zwischenablage-APIs des W3C nicht implementiert. Ich forsche Workarounds, aber wenn jemand einen kennt, würde ich es gerne hören.

    
Ben Collins 05.06.2013, 02:20
quelle

2 Antworten

8

Ich denke, die Antwort ist so unbefriedigend wie "nein". Siehe diesen WebKit-Fehler:

Ссылка

Wenn Sie beabsichtigen, Daten in etwas einzufügen, das nicht contentEditable ist, eine Texteingabe oder einen Textbereich, weiß ich keine Methode, um die aktuelle Version von Safari dazu zu bringen.

Update: Eine versuchte Abarbeitung in diesem JSFiddle , vereinfacht nur für den Umgang mit Text, funktioniert in Safari 6.0 nicht .5. Es versucht einen Workaround, bei dem ein verstecktes Textfeld automatisch hervorgehoben wird, wenn Cmd-V gedrückt wird, nur um das Einfügen in Safari zu ermöglichen. Es verhindert zwar das "Sie können keinen Signalton einfügen", aber es wird kein Ereignis zum Einfügen gesendet und nichts wird in die geheime Eingabe eingefügt.

%Vor%     
Alexander Ljungberg 14.06.2013, 09:33
quelle
0

Ich weiß nicht, ob es Ihnen hilft, aber ich benutze eine Eingabe außerhalb des Bildschirms, um den Import von Safari-Akzepten auf der Seite zu erzwingen. Es hat mir geholfen, also hier geht es:

Ich mache:

Skript:

%Vor%

css:

%Vor%

html:

%Vor%     
no_ripcord 24.09.2014 02:51
quelle