Próbuję napisać kod dla Safari do obsługi zdarzenia wklejania, ale wydaje się, że nie działa poprawnie. Zgodnie z odniesieniem do WebKit DOM, oncut
, onpaste
i oncopy
są obsługiwane bardziej lub mniej, tak jak sugeruje API Clipboard W3C. Jednak nie działa tak, jak się spodziewam. Wklejam dane obrazu, ale o ile mi wiadomo, problem, który mam, dotyczy każdego rodzaju wklejenia. Ten jsfiddle działa dobrze w Chrome, ale nie w Safari 6.0.4 na OS X.Czy Safari obsługuje poprawnie wklejanie zdarzenia?
$(function() {
console.log("ready");
$("#pastearea").on("paste", function (e) {
e.preventDefault();
console.debug("testing paste in safari");
var blob = e.originalEvent.clipboardData.items[0].getAsFile();
console.debug(blob);
var reader = new FileReader();
reader.onload = readerLoaded;
reader.readAsDataURL(blob);
});
});
function readerLoaded(e) {
$("#dest").attr("src", e.target.result);
}
Próbowałem ponownie, używając tylko plain JS. Nadal nie ma radości:
<div id="pastearea" onpaste="plainjsOnPaste()" style="width: 100px; height: 100px; background-color: blue;"/>
function plainjsOnPaste(e) {
console.log("blahblahblah");
console.log(e);
}
Jeśli jest jakiś problem z Safari, to oczywiście nie powinienem oczekiwać, że jQuery zadziała. O ile mogę powiedzieć, w drugiej próbie (zwykły) robię dokładnie to, co sugeruje WebKit, ale powinienem to zrobić, ale w ogóle nie działa. Czy jest to znane ograniczenie Safari, czy też problem między krzesłem a klawiaturą?
Aktualizacja: wygląda na to, że Safari nie implementuje roboczą wersję roboczą interfejsu API Schowka w W3C. Badam obejścia, ale jeśli ktokolwiek je zna, to chciałbym to usłyszeć.
Wydaje Safari potrzebuje jakiegoś obszaru wprowadzania, w którym można wykonać wklejanie, użycie 'contentEditable = true' uruchomi zdarzenie w Safari http://jsfiddle.net/RrP8X/ – Duopixel
@Duopixel dlaczego komentarz, a nie odpowiedź? To jest całkowicie poprawna odpowiedź (nawet lepiej, jeśli możesz podać źródło do tego ...). –
Byłoby również wskazane, aby zrobić to bez ustawiania contentEditable - ma to pewne niepożądane efekty uboczne, takie jak wyświetlanie kursora textarea na fokusie. –