Domanda

Sto provando a leggere il contenuto degli appunti usando Javascript. Con Internet Explorer è possibile utilizzare la funzione

window.clipboardData.getData("Text")

Esiste un modo simile di leggere gli Appunti in Firefox, Safari e Chrome?

È stato utile?

Soluzione

Safari supporta la lettura degli appunti durante gli eventi onpaste :

Informazioni

Vuoi fare qualcosa del tipo:

someDomNode.onpaste = function(e) {
    var paste = e.clipboardData && e.clipboardData.getData ?
        e.clipboardData.getData('text/plain') :                // Standard
        window.clipboardData && window.clipboardData.getData ?
        window.clipboardData.getData('Text') :                 // MS
        false;
    if(paste) {
        // ...
    }
};

Altri suggerimenti

I fogli di calcolo online agganciano gli eventi Ctrl + C, Ctrl + V e trasferiscono lo stato attivo su un controllo TextArea nascosto e impostano il contenuto sul nuovo contenuto desiderato negli Appunti per copiarlo o leggono il contenuto dopo che l'evento è terminato per incollare.

NO. E se trovi un hack (ad es. vecchia versione di Flash) non dipendere da esso.

Posso chiederti perché vuoi leggere dagli appunti? Se l'utente vuole passare il contenuto degli appunti, tutto ciò che deve fare è incollare.

Credo che le persone utilizzino un elemento Flash nascosto per leggere i dati degli appunti dai browser che hai citato.

Usando il suggerimento di @agsamek ho creato un piccolo test spezzato e l'ho fatto funzionare. Nel mio caso, devo attendere un nuovo pageload per l'input incollato, quindi mi concentro su una textarea fuori dalla vista e leggo il testo da lì.

Potresti estenderlo per ascoltare tasti specifici (incolla combinazione) e poi concentrarti sul campo nascosto. Ci sarebbe sicuramente più lavoro da fare, poiché penso che dovresti concentrarti di nuovo sull'ultimo elemento focalizzato e incollare il contenuto lì.

Per il mio caso d'uso, tuttavia, questo è stato sufficiente per farlo funzionare negli ultimi Chrome e Firefox. Suggerimenti benvenuti.

https://jsfiddle.net/wuestkamp/91dxjv7s/11/

$(function () {

    $('body').prepend('<input type="text" id="hidden_textbox" style="position: absolute; width:0px; height: 0px; top: -100px; left: -100px">');

    var $hiddenTextbox = $('#hidden_textbox');
    $hiddenTextbox.focus();

    $(document).on('paste', function () {
        setTimeout(function () {
            var val = $hiddenTextbox.val();

            console.log('pasted: ' + val);

        }, 50);

    });

});
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top