2009-07-29 4 views
17

Mi sono imbattuto in un sito che inietta una riga "Ulteriori informazioni:" alla fine di qualsiasi testo evidenziato e copiato dalle sue pagine.Iniezione di testo quando il contenuto viene copiato da una pagina Web

Non l'ho mai visto prima, e senza scavare seriamente nel loro codice, non riesco a trovare il codice che lo fa.

Qualcuno sa come è fatto?

Esempio: http://peaceful-parenting.suite101.com/article.cfm/how_to_keep_kids_from_climbing_on

copia un paragrafo di testo e incollarlo in un'altra applicazione, e ci sarà una linea "leggi tutto" in seguito.

+1

Basta non farlo, per favore non farlo. – couchand

risposta

37

Suite101 utilizza un servizio di terzi chiamato Tynt.

frammento JavaScript del Tynt si trova a http://tcr.tynt.com/javascripts/Tracer.js

ho esplorato la fonte per voi (con qualche aiuto dal Online JavaScript beautifier).

Quindi, ecco cosa sta succedendo:

  • il codice attiva su eventi come mouseup, MouseDown, e la copia (nella funzione startListeningForTraces)
  • se l'utente ha selezionato un intervallo di testo, allora:
    • crea il codice HTML per un collegamento di attribuzione, oltre all'URL di licenza CC opzionale
    • aggiunge questo codice HTML alla selezione, posizionandolo all'interno di una dimensione zero <div> (per mantenerlo in visibile sullo schermo)
    • riporta quello che è stato copiato di nuovo ai server di Tynt

codice di Tynt fa un enorme quantità di lavoro per fare questo lavoro senza soluzione di continuità tra i vari browser.

+1

Grazie per l'analisi. Che bel pezzo di codice! – Josh

3

Sembra che sia tynt.com, che è una sorta di tracciante per il testo che viene copiato dalla loro pagina.

Dal sito tynt.com

Tracer aggiunge automaticamente un link al tuo sito quando il contenuto viene copiato e incollato. Per saperne di più: http://tracer.tynt.com/features-and-benefits-of-tracer#ixzz0MgaE6z6y sotto Licenza Creative Commons: Attribution No Derivatives

Heck ... è appena aggiunto il collegamento più leggere e la roba licenza CC per il testo ho copiato dal sito tynt.com.