2014-09-29 25 views
5

Moim początkowym celem jest pobranie obrazu ze schowka. Ale mam problem ze zdobyciem zdarzenia wklejania.Zgłoszenie wklejania języka JavaScript działa poprawnie w przeglądarce Chrome, ale nie Firefox

W JSFiddle, gdzie reprodukowane problemu, HTML zawiera tylko Gr:

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

Kod JavaScript pierwszy wiąże mojej funkcji handlePaste(), aby w przypadku pasty.

window.onload = function() { 
    //adding paste event listener on the div 
    document.getElementById("pasteTarget"). 
     addEventListener("paste", handlePaste); 
}; 

Ta funkcja powinna zostać wywołana, gdy użytkownik naciśnie Ctrl + V lub zaznaczy "wklej" w menu przeglądarki.

function handlePaste(e) { 
    alert("I'm in handlePaste");  
    for (var i = 0 ; i < e.clipboardData.items.length ; i++) { 
     var item = e.clipboardData.items[i]; 
     console.log("Item: " + item.type); 
     alert(item.type); 
    } 
} 

Ważne: ta funkcja uzyskuje dostęp do pliku e.clipboardData w celu pobrania zawartości schowka. Na przykład, jeśli naciśniesz klawisz PrtScrn, a następnie Ctrl + V, wysyłasz obraz ekranu wydruku do metody handlePaste. Ostatni alert pokazuje "image/png", gdy działa poprawnie.

Chrome v37: JsFiddle działa poprawnie. Firefox v32: metoda handlePaste() nie jest wywoływana, pierwszy alert nie pojawia się.

szyfrowego jsFiddle: http://jsfiddle.net/demeylau/ke44bufm/1/

+0

Wątpię, czy można wkleić cokolwiek do niewytłumaczalnego elementu – ovi

+0

@ Ovi - czy będzie działać w Chrome, ponieważ jest to rodzaj błędu w Chrome? –

Odpowiedz

2

O ile mogę powiedzieć, będziesz musiał obsłużyć wklejanie oddzielnie za agenta przeglądarki. Joshua brutto obejmuje wiele zawiłości przypadku pasty w tym artykule: Paste Wasteland

Firefox lubi być jeszcze bardziej tępy, ale jest to możliwe do odczytania danych obraz jako plik traktując dane ze schowka jako Blob. (zobacz postscriptum w artykule Grossa) Jest to dość niepoprawny kod źródłowy w przeglądarkach obsługujących zdarzenia systemu operacyjnego w nieco inny sposób i zwięźle podsumowuje, dlaczego mamy nowsze funkcje znormalizowane w takich rzeczach jak WebAPI. Mam nadzieję, że to pomoże.

+0

Istnieje również pasek informujący o tym [problem w FF] (https://bugzilla.mozilla.org/show_bug.cgi?id=439189). Ale wciąż pozostaje nierozwiązana, a ostatnia aktualizacja miała miejsce w 2014 roku. – muffir