FastComments.com


Aggiungi commenti live inline a documenti, libri, ecc

FastComments Collab Chat consente agli utenti di evidenziare e annotare qualsiasi contenuto testuale sul tuo sito web, creando discussioni thread collegate a selezioni di testo specifiche. Gli utenti possono selezionare parole, frasi o interi paragrafi per avviare conversazioni collaborative direttamente all'interno del tuo contenuto.

Questa funzionalità è perfetta per feedback editoriali, ambienti di lettura collaborativa, piattaforme educative, revisione di documenti e qualsiasi scenario in cui desideri discussioni contestuali ancorate a parti specifiche del testo.

Nota che questa documentazione è specifica per la funzionalità Collab Chat. Puoi aggiungere commenti per contenuti con molte pagine, come Books, con thread-per-page, without using collab chat. FastComments non addebita inoltre per pagina o per thread. Collab Chat è specificamente pensato quando vuoi permettere agli utenti di selezionare il testo e commentare la sezione evidenziata.

Puoi vedere un esempio qui.


Esempi Internal Link

Esempio base

Il modo più semplice per usare Collab Chat è mirare a un singolo contenitore di contenuti. Questo esempio mostra come abilitare le annotazioni di testo su un articolo:

Esempio base di Collab Chat
Copy CopyRun External Link
1
2<!DOCTYPE html>
3<html>
4<head>
5 <title>My Article with Collab Chat</title>
6</head>
7<body>
8 <div id="article-content" style="min-height: 500px">
9 <h1>My Article Title</h1>
10 <p>This is a paragraph that users can annotate. Simply highlight any text to start a discussion!</p>
11 <p>You can have multiple paragraphs, and users can highlight text across any of them.</p>
12 </div>
13
14 <script src="https://cdn.fastcomments.com/js/embed-collab-chat.min.js"></script>
15 <script>
16 FastCommentsCollabChat(document.getElementById('article-content'), {
17 tenantId: 'demo'
18 });
19 </script>
20</body>
21</html>
22

Esempio con ID URL personalizzato (per pagina di un libro, articolo, ecc.)

Per impostazione predefinita, Collab Chat usa l'URL della pagina combinato con il percorso dell'elemento e l'intervallo di testo per identificare le conversazioni. Puoi fornire un urlId personalizzato per avere maggiore controllo su come vengono raggruppate le conversazioni:

Collab Chat con ID URL personalizzato
Copy Copy
1
2<script src="https://cdn.fastcomments.com/js/embed-collab-chat.min.js"></script>
3<script>
4 FastCommentsCollabChat(document.getElementById('article-content'), {
5 tenantId: 'demo',
6 urlId: 'book-one-page-2'
7 });
8</script>
9

Questo è utile se la struttura dei tuoi URL cambia ma vuoi mantenere le stesse conversazioni, o se vuoi condividere le stesse annotazioni delle conversazioni su più pagine.

Esempio con modalità scura

Se il tuo sito ha uno sfondo scuro, abilita il supporto per la modalità scura per assicurarti che l'interfaccia di chat appaia correttamente:

Collab Chat con modalità scura
Copy CopyRun External Link
1
2<!DOCTYPE html>
3<html>
4<head>
5 <title>My Article with Collab Chat - Dark Mode</title>
6 <style>
7 body {
8 background-color: #1a1a1a !important;
9 color: #e0e0e0 !important;
10 font-family: system-ui, -apple-system, sans-serif;
11 padding: 20px;
12 margin: 0;
13 }
14 #article-content {
15 max-width: 800px;
16 margin: 0 auto;
17 background-color: #2d2d2d;
18 padding: 20px;
19 border-radius: 8px;
20 }
21 h1 {
22 color: #ffffff !important;
23 }
24 p {
25 color: #e0e0e0 !important;
26 line-height: 1.6;
27 }
28 .fastcomments-collab-chat-top-bar {
29 background-color: #2d2d2d !important;
30 color: #e0e0e0 !important;
31 border-bottom: 1px solid #444 !important;
32 }
33 </style>
34</head>
35<body>
36 <div id="article-content" style="min-height: 500px">
37 <h1>My Article Title</h1>
38 <p>This is a paragraph that users can annotate. Simply highlight any text to start a discussion!</p>
39 <p>You can have multiple paragraphs, and users can highlight text across any of them.</p>
40 </div>
41
42 <script src="https://cdn.fastcomments.com/js/embed-collab-chat.min.js"></script>
43 <script>
44 FastCommentsCollabChat(document.getElementById('article-content'), {
45 tenantId: 'demo',
46 hasDarkBackground: true
47 });
48 </script>
49</body>
50</html>
51

Esempio con barra superiore disabilitata

Per impostazione predefinita, Collab Chat mostra una barra superiore con il conteggio degli utenti e il conteggio delle discussioni. Puoi disabilitarla:

Collab Chat con barra superiore disabilitata
Copy CopyRun External Link
1
2<!DOCTYPE html>
3<html>
4<head>
5 <title>My Article with Collab Chat - No Top Bar</title>
6</head>
7<body>
8 <div id="article-content" style="min-height: 500px">
9 <h1>My Article Title</h1>
10 <p>This is a paragraph that users can annotate. Simply highlight any text to start a discussion!</p>
11 <p>You can have multiple paragraphs, and users can highlight text across any of them.</p>
12 </div>
13
14 <script src="https://cdn.fastcomments.com/js/embed-collab-chat.min.js"></script>
15 <script>
16 FastCommentsCollabChat(document.getElementById('article-content'), {
17 tenantId: 'demo',
18 topBarTarget: null
19 });
20 </script>
21</body>
22</html>
23

Esempio con callback per il conteggio dei commenti

Puoi monitorare quando i commenti vengono aggiunti o aggiornati usando il callback commentCountUpdated:

Collab Chat con callback per il conteggio dei commenti
Copy Copy
1
2<script src="https://cdn.fastcomments.com/js/embed-collab-chat.min.js"></script>
3<script>
4 FastCommentsCollabChat(document.getElementById('article-content'), {
5 tenantId: 'demo',
6 commentCountUpdated: function(count) {
7 console.log('Total comments:', count);
8 document.getElementById('comment-badge').textContent = count;
9 }
10 });
11</script>
12

Esempio con più sezioni

Puoi inizializzare Collab Chat su più sezioni separate della tua pagina. Ogni sezione avrà le proprie annotazioni indipendenti:

Collab Chat su più sezioni
Copy Copy
1
2<div id="intro-section">
3 <h2>Introduction</h2>
4 <p>Content for the introduction...</p>
5</div>
6
7<div id="main-section">
8 <h2>Main Content</h2>
9 <p>Content for the main article...</p>
10</div>
11
12<script src="https://cdn.fastcomments.com/js/embed-collab-chat.min.js"></script>
13<script>
14 // Inizializza la sezione introduttiva
15 FastCommentsCollabChat(document.getElementById('intro-section'), {
16 tenantId: 'demo',
17 urlId: 'my-article-intro'
18 });
19
20 // Inizializza la sezione principale
21 FastCommentsCollabChat(document.getElementById('main-section'), {
22 tenantId: 'demo',
23 urlId: 'my-article-main'
24 });
25</script>
26

Aggiungere commenti in tempo reale ai libri online Internal Link

Puoi inizializzare Collab Chat per pagina se desideri e avere thread separati per pagina, basta passare al parametro urlId un valore come book-one-page1. Questa configurazione funziona anche per il widget normale dei commenti.

Comportamento della selezione del testo Internal Link

Come funziona la selezione del testo

Quando gli utenti selezionano del testo all'interno del contenitore Collab Chat, il widget cattura quella selezione e permette loro di avviare una discussione. La selezione può essere tanto piccola quanto una singola parola o tanto estesa quanto più paragrafi che attraversano elementi diversi.

Ritardo nella selezione

Su dispositivi desktop, c'è un ritardo di 3,5 secondi tra il momento in cui un utente seleziona del testo e il momento in cui appare l'invito alla discussione. Questo evita che l'interfaccia utente si sfarfalli quando gli utenti stanno semplicemente evidenziando del testo per copiarlo o leggerlo. Su dispositivi mobili, l'invito appare immediatamente poiché la selezione del testo è più deliberata sui touchscreen.

ID conversazione unici

Ogni conversazione ottiene un urlId unico che combina l'URL della pagina, il percorso dell'elemento DOM e l'intervallo di testo serializzato. Questo assicura che ogni selezione di testo crei una conversazione distinta che può essere ritrovata in seguito.

Se fornisci un urlId personalizzato nella tua configurazione, verrà combinato con il percorso dell'elemento e l'intervallo di testo per creare l'identificatore finale.

Evidenziazioni visive

Quando esiste una discussione per una particolare selezione di testo, quel testo riceve un'evidenziazione visiva. L'evidenziazione è implementata usando colori di sfondo e compare al passaggio del mouse o quando la finestra di chat associata è aperta.

Il sistema di evidenziazione funziona avvolgendo il testo selezionato in un elemento speciale che può essere stilizzato. Questo approccio assicura che le evidenziazioni rimangano accurate anche quando la struttura HTML sottostante è complessa.

Posizionamento della finestra di chat

Quando un utente clicca su un'evidenziazione o crea una nuova annotazione, una finestra di chat appare vicino al testo selezionato. Il widget calcola automaticamente la posizione migliore per questa finestra in base allo spazio disponibile nella viewport.

Il sistema di posizionamento usa classi CSS come to-right, to-left, to-top e to-bottom per indicare in quale direzione la finestra di chat dovrebbe estendersi dall'evidenziazione. Su dispositivi mobili (schermi con larghezza inferiore a 768px), la finestra di chat appare sempre a schermo intero per una migliore usabilità.

Dimensioni della finestra di chat

Le finestre di chat hanno larghezza di 410px su desktop con uno spazio di 20px e una freccia visiva di 16px che punta al testo evidenziato. Queste dimensioni sono fisse per garantire un comportamento coerente, ma è possibile personalizzare l'aspetto tramite CSS.

Selezioni attraverso gli elementi

Gli utenti possono selezionare del testo che attraversa più elementi HTML, ad esempio evidenziando dal mezzo di un paragrafo fino all'inizio di un altro. Il sistema di serializzazione dell'intervallo gestisce correttamente questi casi e evidenzierà tutto il testo selezionato anche attraverso i confini degli elementi.

Compatibilità del browser

Il sistema di selezione del testo utilizza l'API standard window.getSelection() che è supportata in tutti i browser moderni. Per le versioni più vecchie di Internet Explorer, ricorre a document.selection per compatibilità.

Persistenza della selezione

Una volta che una conversazione è stata creata per una selezione di testo, quell'annotazione persiste anche se la pagina viene ricaricata. L'intervallo serializzato e il percorso DOM permettono al widget di ripristinare le evidenziazioni esattamente nello stesso punto quando gli utenti ritornano sulla pagina.

Questo funziona in modo affidabile finché il contenuto della tua pagina rimane stabile. Se modifichi il contenuto testuale o ristrutturi l'HTML, le annotazioni esistenti potrebbero non allinearsi più correttamente con il testo. Per questo motivo, è meglio evitare cambiamenti importanti del contenuto sulle pagine con annotazioni attive, o considerare la migrazione delle annotazioni quando i cambiamenti di contenuto sono necessari.

Personalizzazione Internal Link

Supporto della Modalità Scura

Modalità scura dinamica

Se la modalità scura del tuo sito è controllata aggiungendo una classe .dark all'elemento body, l'interfaccia di Collab Chat la rispetterà automaticamente senza richiedere una reinizializzazione. Gli stili del widget sono progettati per rispondere alla presenza di questa classe.

Esempio CSS per la modalità scura
Copy Copy
1
2/* Il tuo CSS per la modalità scura */
3body.dark {
4 background: #1a1a1a;
5 color: #ffffff;
6}
7

Stilizzazione personalizzata con CSS

Puoi personalizzare l'aspetto degli evidenziamenti, delle finestre di chat e di altri elementi usando il CSS. Il widget aggiunge classi specifiche che puoi mirare nel tuo stylesheet.

Gli evidenziamenti di testo utilizzano il sistema di styling dei commenti a fumetto di FastComments, quindi qualsiasi personalizzazione applicata al widget di commenti standard influenzerà anche Collab Chat.

Personalizzazione della barra superiore

La barra superiore mostra il numero di utenti online e il numero di discussioni. Puoi personalizzarne la posizione fornendo un elemento personalizzato come topBarTarget:

Posizione personalizzata della barra superiore
Copy Copy
1
2FastCommentsCollabChat(element, {
3 tenantId: 'demo',
4 topBarTarget: document.getElementById('my-custom-header')
5});
6

Oppure disabilitarla completamente impostandola su null:

Disabilitare la barra superiore
Copy Copy
1
2FastCommentsCollabChat(element, {
3 tenantId: 'demo',
4 topBarTarget: null
5});
6

Comportamento mobile

Su schermi con larghezza inferiore a 768px, Collab Chat passa automaticamente a un layout ottimizzato per mobile. Le finestre di chat appaiono a schermo intero invece di fluttuare accanto al testo e il ritardo di selezione viene rimosso per un'interazione più immediata.

Questo comportamento è integrato e non richiede alcuna configurazione. Il widget rileva automaticamente la dimensione dello schermo e si adatta di conseguenza.

Aspetto della finestra di chat

Le finestre di chat sono larghe 410px su desktop con una freccia di 16px che punta al testo evidenziato. Le finestre si posizionano automaticamente in base allo spazio disponibile nella viewport, usando classi di posizionamento come to-right, to-left, to-top e to-bottom.

Puoi aggiungere CSS personalizzato per regolare colori, font, spaziatura o altre proprietà visive di queste finestre. Le finestre di chat utilizzano la stessa struttura dei componenti del widget FastComments standard, quindi ereditano qualsiasi personalizzazione globale che hai applicato.

Localizzazione

Collab Chat supporta le stesse opzioni di localizzazione del widget FastComments standard. Imposta l'opzione locale per visualizzare il testo dell'interfaccia in lingue diverse:

Impostare la localizzazione
Copy Copy
1
2FastCommentsCollabChat(element, {
3 tenantId: 'demo',
4 locale: 'es' // Spagnolo
5});
6

FastComments supporta dozzine di lingue. L'impostazione del locale influisce su tutto il testo dell'interfaccia, inclusi prompt, pulsanti e testi dei placeholder.

Opzioni di personalizzazione ereditate

Poiché Collab Chat estende il widget di commenti standard, eredita tutte le opzioni di personalizzazione dal widget base. Questo include classi CSS personalizzate, traduzioni personalizzate, personalizzazione degli avatar, formattazione delle date e molto altro.

Consulta la documentazione principale di personalizzazione di FastComments per l'elenco completo delle opzioni di personalizzazione disponibili.

Lavorare con font personalizzati

Se il tuo sito utilizza font personalizzati, l'interfaccia di Collab Chat erediterà quei font dal CSS della tua pagina. Potrebbe essere necessario creare una regola di personalizzazione del widget e @import qualsiasi font nel CSS personalizzato in quella regola se vuoi che la finestra di chat fluttuante utilizzi gli stessi font.

Sincronizzazione in tempo reale Internal Link

Real-Time Updates

Collab Chat utilizza connessioni WebSocket per sincronizzare tutte le conversazioni in tempo reale tra tutti gli utenti connessi. Quando qualcuno crea una nuova annotazione, aggiunge un commento o elimina una discussione, tutti gli altri utenti che visualizzano la stessa pagina vedono l'aggiornamento immediatamente senza dover aggiornare la pagina.

How WebSocket Sync Works

Quando si inizializza Collab Chat, il widget stabilisce una connessione WebSocket con i server FastComments. Questa connessione rimane aperta per tutta la durata della sessione dell'utente e ascolta gli aggiornamenti relativi alla pagina corrente.

Il sistema WebSocket utilizza tre tipi di messaggi broadcast per Collab Chat. L'evento new-text-chat viene attivato quando qualcuno crea una nuova annotazione sulla pagina. L'evento updated-text-chat viene attivato quando qualcuno aggiorna una conversazione esistente. L'evento deleted-text-chat viene attivato quando qualcuno elimina un'annotazione.

Broadcast ID System

Per evitare effetti di eco in cui gli utenti vedono le proprie azioni trasmesse nuovamente, ogni aggiornamento include un broadcastId univoco. Quando un utente crea o aggiorna un'annotazione, il suo client genera un UUID per quell'operazione. Quando il WebSocket trasmette l'aggiornamento a tutti i client, il client di origine ignora l'aggiornamento perché corrisponde al proprio broadcastId.

Questo garantisce un'interazione fluida in cui gli utenti vedono immediatamente le proprie modifiche nell'interfaccia senza dover attendere il giro di andata e ritorno attraverso il server, pur assicurando che tutti gli altri utenti ricevano l'aggiornamento.

Live User Count

La barra superiore mostra il numero di utenti che stanno attualmente visualizzando la pagina. Questo conteggio si aggiorna in tempo reale man mano che gli utenti entrano e escono. Il conteggio degli utenti è fornito tramite la stessa connessione WebSocket e aumenta/diminuisce automaticamente in base agli eventi di connessione e disconnessione.

Connection Resilience

Se la connessione WebSocket si interrompe a causa di problemi di rete o manutenzione del server, il widget tenta automaticamente di riconnettersi. Durante il periodo di riconnessione, gli utenti possono ancora interagire con le annotazioni esistenti, ma non vedranno aggiornamenti in tempo reale dagli altri utenti fino a quando la connessione non sarà ristabilita.

Una volta riconnesso, il widget si risincronizza per assicurarsi che non siano stati persi aggiornamenti. Questo avviene in modo trasparente senza richiedere interventi da parte dell'utente.

Bandwidth Considerations

I messaggi WebSocket sono leggeri e contengono solo le informazioni essenziali necessarie per sincronizzare lo stato. La creazione di una nuova annotazione utilizza tipicamente meno di 1KB di larghezza di banda. Il sistema include anche un batching intelligente per ridurre la frequenza dei messaggi durante i periodi di alta attività.

Le tue metriche d'uso nella dashboard FastComments tracciano pubSubMessageCount e pubSubBandwidth in modo da poter monitorare l'attività di sincronizzazione in tempo reale sui tuoi siti.

Cross-Tab Synchronization

Se un utente ha la stessa pagina aperta in più schede del browser, gli aggiornamenti in una scheda appaiono immediatamente nelle altre schede. Questo funziona tramite lo stesso meccanismo di sincronizzazione WebSocket e non richiede alcuna configurazione aggiuntiva.

Security

I messaggi WebSocket vengono trasmessi su connessioni sicure (WSS) e includono la validazione del tenant per assicurare che gli utenti ricevano solo gli aggiornamenti delle conversazioni che sono autorizzati a visualizzare. Il server valida tutte le operazioni prima di trasmetterle per prevenire accessi o manipolazioni non autorizzate.

Hai domande?

Questo è tutto per FastComments Collab Chat! Se hai domande, hai bisogno di aiuto con l'implementazione o hai suggerimenti per funzionalità, faccelo sapere qui sotto o contatta il nostro team di supporto.

Per esempi dal vivo, consulta Govscent.org che utilizza Collab Chat in produzione.