Archivio per il tag usabilità

Come implementare la copia del testo usando Javascript + Flash (cross browser)

Vediamo come è possibile implementare una funzione per la copia automatica in clipboard del contenuto di una stringa, la cosa può tornare utile per far selezionare direttamente all’utente delle parti di testo e copiarlo senza dover usare la combinazione CTRL-C. A me è servita solo per aggiornare il mio userscript che inserisce il codice HTML valido nelle pagine di Youtube, in questo modo basta selezionare il box dove si trova il codice ed incollarlo sul proprio editor HTML :-) , any suggestions about errors in my poor english are greatly appreciated :-D

Usando Javascript la cosa non è possibile, molti browser infatti, impediscono, per ragioni di sicurezza, l’accesso alla clipboard via Javascript. Se ci si limitasse ad IE invece, sarebbe possibile ottenere la cosa utilizzando il solo Javascript, se si vuole invece fare una cosa cross-browser è necessario utilizzare uno script in Flash. Tutto sommato Flash è i plugin più popolare, molto probabilmente la maggioranza degli utenti lo ha installato e quindi non ci dovrebbero essere grossi problemi.

Logo di Adobe Flash

Qui di seguito riporto la tecnica da usare per implementare la funzione copyToClipboard e il metodo di utilizzo, la funzione è leggermente modificata rispetto all’originale, queste sono le modifiche che ho apportato:

  • rimossa la parte di codice relativa a IE (che permette di suo di inviare testo alla clipboard), dovrebbe comunque funzionare se il plugin Flash è installato (io non ho il plugin di Flash in IE, quindi servirebbe verificarlo :-P );
  • l’originale permetteva solo la copia di testo inserito all’interno di tag INPUT (accettava l’oggetto come parametro), la mia versione invece accetta una stringa come input :-) ;

La funzione originale è possibile l’abbiate vista all’opera su Photobucket o su Urltea (prima di capire che sfruttava Flash avevo una mezza idea di aprire un bug su Bugzilla :-P ), quella modificata la potete vedere all’opera su questa pagina selezionando il codice della funzione inserito nel tag PRE (ho preparato una pagina a parte perchè non voglio caricare lo script sulla pagina del post).

Innanzitutto, bisogna scaricare il file _clipboard.swf, che potete trovare al link inserito a fine post. Il file è distribuito con licenza GPL (non da me ma dall’autore), quindi lo potete usare come meglio credete :-) .

I’ve uploaded the SWF file that you can use in your own webpage.

This software is licensed under the GPL so you can take this solution, change it, whatever, free.

Una volta uploadato il file _clipboard.swf sul vostro spazio Web (non usate quello caricato sul mio server, grazie!) inserite il percorso del file nella variabile clipboardswfpath e richiamate la funzione all’interno della pagina in cui desiderate utilizzarla passandogli come argomento una stringa che verrà copiata nella clipboard del visitatore.

copyToClipboard(document.getElementById('input_id').value);

per un tag PRE (e probabilmente per quasi tutti gli altri):

oggetto=document.getElementById('id_tag_pre');
range = document.createRange();
range.selectNodeContents(oggetto);
copyToClipboard(range);

per IE usate getElementById(’mypre_id’).innerText.
Ecco la funzione:


function copyToClipboard(texttocopy)
{
	  var clipboardswfpath="indirizzo_file_SWF";
	var flashcopier = 'flashcopier';
	if(!document.getElementById(flashcopier)) {
		var divholder = document.createElement('div');
		divholder.id = flashcopier;
			document.body.appendChild(divholder);
    }
	document.getElementById(flashcopier).innerHTML = '';
	var divinfo = '<embed src="'+clipboardswfpath+'"  FlashVars="clipboard='+encodeURIComponent(texttocopy)+'" width="0" height="0"></embed>';
	document.getElementById(flashcopier).innerHTML = divinfo;
}

Purtroppo non è possibile, come da suggerimento che ho avuto su userscript.org inserire il file SWF come stringa di caratteri usando un data link, al momento i browser non supportano.

Come piccola considerazione finale, vorrei far notare a tutti quanto possa influenzare la “sicurezza” di un browser l’utilizzo di un plugin. Se, escludendo IE, nessun altro browser si fida a dare accesso in scrittura alla clipboard un motivo deve pur esserci, il fatto che avendo il plugin Flash installato si possa “raggirare” questa restrizione dovrebbe far riflettere. Certo, poter accedere alla clipboard permette alle applicazioni Web maggiori funzionalità ma a discapito, forse, della sicurezza. Rassicuro tutti, dicendo che nemmeno Flash dà accesso alla clipboard in lettura :-P .

Ringrazio ssjx/Engelium che mi ha fatto interessare all’argomento :-)

Fonte: Clipboard Copy.

Technorati Tags: , , ,

Ti è piaciuto l'articolo? Vota Ok oppure No. Grazie Mille!

Puoi votare l'articolo anche qui, gli articoli precedenti qui.

Enso diventa OpenSource

Il team di Humanized ha deciso di rilasciare Enso, un software nato per semplificare l’usabilità, con . La decisione è maturata per permettere agli sviluppatori di aggiungere comandi per far interagire Enso con le proprie applicazioni, Enso infatti, è nato per garantire una migliore usabilità dei software e la sua utilità è direttamente proporzionale al numero di quelli con cui riuscirà ad integrarsi, citando dal blog di Humanized:

Why are we doing this?

For Enso to have a chance of becoming the universal tool that we envisioned, it has to be compatible with an ever-expanding number of applications as well as providing an ever-expanding number of commands. For instance, there’s a program called GVim; Enso’s text-selection commands are currently incompatible with GVim because the latter has a unique way of handling text selections. A few users have complained to us about this, and while we’re sympathetic, we’ve had to pull a Spock and say “The needs of the many outweigh the needs of the few” as we focused the limited resources of our 4-person development team on getting the most popular commands to work with the most popular applications. The closed-source development model limits what we can do. It doesn’t scale well to the problem of an ever-expanding number of applications and an ever-expanding number of commands

Ora che è Opensource è anche possibile che presto venga resa disponibile una versione per altri sistemi operativi. Cosa che non mi sarei mai aspettato: il codice sorgente è in Python, il più umano dei linguaggi di programmazione e di sicuro quello che al momento conosco un po’ meglio. Non che abbia aspirazioni di sviluppare il codice, ma se vedo che creare comandi è relativamente semplice un pensierino ce lo posso fare :-) .

Per chi non lo conosce, Enso è un tentativo di superare le limitazioni delle attuali interfacce utente proposte dai sistemi operativi, un modo per integrare alle interfacce grafiche la praticità della vecchia linea di comando, che se si sa cosa si vuol fare permette di farlo in maniera molto più veloce. Per ora le uniche due componenti rilasciate come release sono il launcher ed Enso Word (un correttore ortografico globale), ma molte altre vengono rese disponibili in versione beta. Anche se, come app launcher puro e semplice preferisco Launchy, le potenzialità di Enso, soprattutto ora che è OpenSource, sono maggiori e vanno ben oltre la semplice apertura di applicazioni.

Per fare un esempio una delle componenti permette di controllare il proprio player preferito, un’altra di operare traduzioni al volo e così via, tutto questo senza la necessità di aprire il player o il browser ed usare Google Translate.

Per esempio vediamo come si può tradurre dall’inglese all’italiano del testo senza lasciare il text editor in uso o senza aprire una scheda del browser per usare Google Translate. Bene, selezioniamo il testo da tradurre, premiamo CAPSLOCK digitando il comando:

translate to italian

Screenshot di Enso. nell'immagine si vede cosa accade quando si preme CAPSLOCK e si digita il comndo tranlsate

Si noti che non è necessario digitare il comando per intero, è sufficiente digitare le lettere iniziali del comando e l’autocompletamento farà il resto.. Il risultato verrà sostituito al testo selezionato se ci si trova all’interno di un text editor o in una textarea del browser, altrimenti verrà aperta una finestrella che riporterà il testo tradotto.

Non è però che sia tutto rose e fiori :-P . Il traduttore ha almeno un paio di problemi:

  • il risultato della traduzione non è sempre eccelso (credo usi Google Translate), e comunque questo non è un problema imputabile a Enso :-P ;
  • c’è un grosso problema con l’encoding dei caratteri, le accentate ad esempio vengono sostituite da dei punti di domanda :-P ;

il traduttore è comunque in versione Beta ed è quindi probabile che venga migliorato al più presto.

A chi volesse installarlo consiglio di iniziare con il solo Launcher ed eventualmente di installare tutte le componenti solo dopo aver fatto un po’ di pratica con il funzionamento del software. Al momento - purtroppo - non è possibile disinstallare le componenti singolarmente. A prescindere dalle componenti installate è possibile ottenere l’elenco dei comandi attivi premendo CAPSLOCK digitando il comando: commandlist..

Technorati Tags: , , ,

Ti è piaciuto l'articolo? Vota Ok oppure No. Grazie Mille!

Puoi votare l'articolo anche qui, gli articoli precedenti qui.

Recensione di iswitch-tabs, estensione per Firefox che permette di aprire le schede in modo più semplice

Oggi, dopo un bel po’ di tempo che non scrivo su questo blog, vorrei presentare un’estensione che, a mio parere, va nella giusta direzione: cioè quella di rendere più usabile un’applicazione. Niente di che, dirà qualcuno, però secondo me l’idea di questa estensione è geniale, anche se non è fra quelle pubblicizzate su Firefox Addons (pure nome gli hanno cambiato e non a caso credo ::-P ). Fra parentesi, mi piacerebbe sapere chi sceglie i « Componenti aggiuntivi consigliati», no perchè io di quelli consigliati non ne installerei nemmeno uno :-P .

L’estensione si chiama iswitchbtabs e permette di fare una cosa semplicissima: accedere alle schede aperte usando solamente la tastiera. Lo sviluppatore Chris Danis si è ispirato al famoso editor di testo su piattaforma Linux: Emacs (che non ho mai imparato ad usare :-P ) che ha una feature simile. In pratica è sufficiente premere F9 per far apparire una finestrella con elencate tutte le schede aperte in quel momento:

Screenshot della schermata di iswitchb-tabs che mostra le schede aperte in Mozilla Firefox

iniziando a digitare del testo l’elenco delle schede comincerà a ridursi mostrando solamente quelle che soddisferanno il pattern digitato, dando invio si aprirà la prima scheda che appare nella lista. Perchè questo dovrebbe essere utile ? Ecco qualche buon motivo:

  • se le schede aperte sono tante, il loro nome è tagliato, a volte rimangono solo poche lettere visibili (il numero delle schede aperte può variare a seconda della risoluzione dello schermo o del tema utilizzato). Questo ovviamente rende complicato riconoscerle;
  • si può tranquillamente fare a meno della barra delle schede;
  • anche dal punto di vista dell’accessibilità, credo, sia un ottimo metodo per muoversi velocemente fra le schede.

L’unica cosa che, secondo me, potrebbe essere migliorata è quella di proporre le schede aperte in un menu a scomparsa nella barra di stato anzichè in una finestra popup (like Nostalgy for TB). . In realtà, sto anche cercando di fare questa piccola modifica prendendo spunto dalle due estensioni in oggetto, ma sono ben lungi dal venirne a capo (avevo già richiesto nella mailing list di Nostalgy, la scorsa settimana ho messo pure un commento nella pagina di iswitchb-tabs su Firefox Addons ma senza risultati (il commento su A.M.O. è in attesa di moderazione :-P ).

In realtà, inizialmente avevo dei progetti più ambiziosi, però la mia scarsa conoscenza di Javascript e Xul mi ha fatto desistere :-P . Quello che volevo fare era rendere accessibili tutti i menu di Firefox (File, Visualizza, Strumenti…) usando l’autocompletamento, comunque ci ho rinunciato :-P . All’idea di modificare iswitchb-tabs per farla funzionare come Nostalgy invece, non ho ancora desistito :-P .

In realtà, io speravo che fosse possibile richiamare la scheda aperta in Firefox, e più in generale di tutte le applicazioni in uso, con Enso ma, almeno qui da me, non è possibile richiamare le schede, è invece possibile richiamare le finestre di qualunque applicazione in uso e per questo ha una sua ragione di rimanere installato :-) . Visto che, gli sviluppatori di Enso sono stati ingaggiati da Mozilla è comunque possibile che ci siano gradite novità a breve :-) .

Download: iswitchb-tabs.

Technorati Tags: , , ,

Ti è piaciuto l'articolo? Vota Ok oppure No. Grazie Mille!

Puoi votare l'articolo anche qui, gli articoli precedenti qui.