FastComments.com

Dodajte inline komentare uživo u dokumente, knjige itd.

FastComments Collab Chat omogućuje korisnicima da označavaju i bilješke na bilo koji tekstualni sadržaj na vašoj web-stranici, stvarajući uvlaknute razgovore vezane uz određene odabire teksta. Korisnici mogu odabrati riječi, rečenice ili cijele odlomke kako bi započeli suradničke razgovore izravno unutar vašeg sadržaja.

Ova značajka je savršena za uredničke povratne informacije, suradničko čitanje, obrazovne platforme, pregled dokumenata i bilo koji scenarij u kojem želite kontekstualne rasprave usidrene u određenom tekstu.

Imajte na umu da su ovi dokumenti specifični za funkcionalnost Collab Chat. Komentiranje možete dodati i za sadržaje s puno stranica, poput knjiga, s nitom po stranici, bez korištenja collab chata. FastComments također ne naplaćuje po stranici ni po niti. Collab Chat se koristi upravo kada želite omogućiti korisnicima da odaberu tekst i komentiraju označeni dio teksta.

Možete vidjeti primjer ovdje.

Primjeri Internal Link

Osnovni primjer

Najjednostavniji način korištenja Collab Chata je ciljanje jednog spremnika sadržaja. Ovaj primjer pokazuje kako omogućiti označavanje teksta na članku:

Osnovni primjer Collab Chata
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

Primjer s prilagođenim URL ID-jem (po stranici knjige, članku itd.)

Po zadanim postavkama, Collab Chat koristi URL stranice u kombinaciji s putanjom elementa i rasponom teksta za identifikaciju razgovora. Možete navesti prilagođeni urlId kako biste imali veću kontrolu nad načinom grupiranja razgovora:

Collab Chat s prilagođenim URL ID-jem
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

Ovo je korisno ako se struktura vaših URL-ova promijeni, ali želite zadržati iste razgovore, ili ako želite dijeliti iste bilješke razgovora na više stranica.

Primjer s tamnim načinom

Ako vaša stranica ima tamnu pozadinu, omogućite podršku za tamni način kako bi korisničko sučelje chata izgledalo ispravno:

Collab Chat s tamnim načinom
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

Primjer s onemogućenom gornjom trakom

Po zadanim postavkama, Collab Chat prikazuje gornju traku s brojem korisnika i brojem rasprava. Možete je onemogućiti:

Collab Chat s onemogućenom gornjom trakom
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

Primjer s povratnim pozivom za broj komentara

Možete pratiti kada su komentari dodani ili ažurirani koristeći povratni poziv commentCountUpdated:

Collab Chat s povratnim pozivom za broj komentara
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

Primjer s više odjeljaka

Možete inicijalizirati Collab Chat na više zasebnih odjeljaka vaše stranice. Svaki odjeljak imat će svoje neovisne bilješke:

Collab Chat na više odjeljaka
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 // Initialize on intro section
15 FastCommentsCollabChat(document.getElementById('intro-section'), {
16 tenantId: 'demo',
17 urlId: 'my-article-intro'
18 });
19
20 // Initialize on main section
21 FastCommentsCollabChat(document.getElementById('main-section'), {
22 tenantId: 'demo',
23 urlId: 'my-article-main'
24 });
25</script>
26

Dodavanje komentiranja u stvarnom vremenu u online knjige Internal Link

Možete inicijalizirati Collab Chat po stranici ako želite, i imati odvojene niti po stranici, jednostavno proslijedite parametar urlId vrijednost poput book-one-page1. Ova konfiguracija također radi za uobičajeni widget komentiranja.

Ponašanje odabira teksta Internal Link

Kako funkcionira odabir teksta

Kad korisnici odaberu tekst unutar Collab Chat kontejnera, widget bilježi taj odabir i omogućuje im pokretanje rasprave. Odabir može biti mali poput jedne riječi ili velik koliko više odlomaka koji obuhvaćaju različite elemente.

Kašnjenje odabira

Na stolnim uređajima postoji kašnjenje od 3,5 sekunde između trenutka kada korisnik odabere tekst i pojave upita za raspravu. To sprječava treperenje korisničkog sučelja kada korisnici jednostavno označavaju tekst radi kopiranja ili čitanja. Na mobilnim uređajima upit se pojavljuje odmah jer je odabir teksta na zaslonima osjetljivim na dodir obično namjerniji.

Jedinstveni ID-ovi razgovora

Svaki razgovor dobiva jedinstveni urlId koji kombinira URL stranice, putanju DOM elementa i serijalizirani raspon teksta. To osigurava da svaki odabir teksta stvori poseban razgovor koji se kasnije može ponovno pronaći.

Ako u svojoj konfiguraciji navedete prilagođeni urlId, on će se kombinirati s putanjom elementa i rasponom teksta kako bi se stvorio konačni identifikator.

Vizualna isticanja

Kad za određeni odabir teksta postoji rasprava, taj tekst dobiva vizualno isticanje. Isticanje se ostvaruje pomoću boja pozadine i pojavljuje se pri prelasku mišem ili kada je pridruženi chat prozor otvoren.

Sustav isticanja radi tako da omota odabrani tekst u poseban element koji se može stilizirati. Ovaj pristup osigurava da isticanja ostanu točna čak i kada je temeljna HTML struktura složena.

Pozicioniranje prozora chata

Kada korisnik klikne na isticanje ili stvori novu bilješku, pored odabranog teksta pojavi se prozor chata. Widget automatski izračunava najbolju poziciju za taj prozor na temelju dostupnog prostora unutar prikaza (viewport).

Sustav pozicioniranja koristi CSS klase poput to-right, to-left, to-top i to-bottom za označavanje u kojem smjeru bi se prozor chata trebao proširiti od isticanja. Na mobilnim uređajima (zasloni širi manje od 768px), prozor chata uvijek se pojavljuje preko cijelog zaslona radi bolje upotrebljivosti.

Dimenzije chat prozora

Chat prozori na stolnim računalima široki su 410px s razmakom od 20px i vizualnom strelicom od 16px koja pokazuje na istaknuti tekst. Te dimenzije su fiksne kako bi se osiguralo dosljedno ponašanje, ali izgled možete prilagoditi pomoću CSS-a.

Odabiri koji obuhvaćaju više elemenata

Korisnici mogu odabrati tekst koji se proteže kroz više HTML elemenata, primjerice označavanje od sredine jednog odlomka do početka drugog. Sustav serijalizacije raspona ispravno obrađuje ovo i istaknut će sav odabrani tekst čak i preko granica elemenata.

Kompatibilnost preglednika

Sustav odabira teksta koristi standardni API window.getSelection() koji je podržan u svim modernim preglednicima. Za starije verzije Internet Explorera koristi se povratna kompatibilnost s document.selection.

Postojanost odabira

Kad se za odabir teksta stvori razgovor, ta bilješka ostaje čak i ako se stranica ponovno učita. Serijalizirani raspon i DOM putanja omogućuju widgetu da ponovno obnovi isticanja na točno istom mjestu kada se korisnici vrate na stranicu.

Ovo radi pouzdano sve dok sadržaj vaše stranice ostane stabilan. Ako promijenite tekstualni sadržaj ili restrukturirate HTML, postojeće bilješke možda više neće pravilno odgovarati tekstu. Iz tog razloga najbolje je izbjegavati velike promjene sadržaja na stranicama s aktivnim bilješkama ili razmotriti migraciju bilješki kada su promjene sadržaja neophodne.

Prilagodba Internal Link

Podrška za tamni način

Dinamički tamni način

Ako je tamni način na vašoj stranici kontroliran dodavanjem klase .dark elementu body, Collab Chat UI automatski će to poštovati bez potrebe za ponovnim inicijaliziranjem. Stilovi widgeta dizajnirani su da reagiraju na prisutnost te klase.

Dark Mode CSS Example
Copy Copy
1
2/* Vaš CSS za tamni način */
3body.dark {
4 background: #1a1a1a;
5 color: #ffffff;
6}
7

Prilagođeno stiliziranje putem CSS-a

Možete prilagoditi izgled isticanja, prozora za chat i drugih elemenata pomoću CSS-a. Widget dodaje specifične klase koje možete ciljati u svom stilskom listu.

Isticanje teksta koristi sustav stiliziranja komentarskih oblačića FastComments, pa će sve prilagodbe koje ste primijenili na standardni widget za komentare također utjecati na Collab Chat.

Prilagodba gornje trake

Gornja traka prikazuje broj korisnika online i broj rasprava. Poziciju možete prilagoditi tako da navedete prilagođeni element kao topBarTarget:

Custom Top Bar Location
Copy Copy
1
2FastCommentsCollabChat(element, {
3 tenantId: 'demo',
4 topBarTarget: document.getElementById('my-custom-header')
5});
6

Ili je u potpunosti onemogućite postavljanjem na null:

Disable Top Bar
Copy Copy
1
2FastCommentsCollabChat(element, {
3 tenantId: 'demo',
4 topBarTarget: null
5});
6

Ponašanje na mobilnim uređajima

Na zaslonima užim od 768px, Collab Chat se automatski prebacuje u izgled optimiziran za mobilne uređaje. Prozori chata pojavljuju se preko cijelog zaslona umjesto da lebde pored teksta, a kašnjenje pri odabiru je uklonjeno radi brže interakcije.

Ovo ponašanje je ugrađeno i ne zahtijeva konfiguraciju. Widget automatski detektira veličinu zaslona i prilagođava se u skladu s tim.

Izgled prozora chata

Prozori chata na desktopu imaju širinu 410px uz strelicu od 16px koja pokazuje na istaknuti tekst. Prozori se automatski postavljaju ovisno o raspoloživom prostoru u viewportu, koristeći klase pozicioniranja poput to-right, to-left, to-top, i to-bottom.

Možete dodati prilagođeni CSS za podešavanje boja, fontova, razmaka ili drugih vizualnih svojstava tih prozora. Prozori chata koriste istu strukturu komponenata kao standardni FastComments widget, pa nasljeđuju sve globalne prilagodbe koje ste primijenili.

Lokalizacija

Collab Chat podržava sve iste opcije lokalizacije kao standardni FastComments widget. Postavite opciju locale kako biste prikazali tekst sučelja na različitim jezicima:

Set Locale
Copy Copy
1
2FastCommentsCollabChat(element, {
3 tenantId: 'demo',
4 locale: 'es' // španjolski
5});
6

FastComments podržava desetke jezika. Postavka locale utječe na sav tekst sučelja, uključujući poruke, gumbe i tekst u poljima za unos (placeholder).

Naslijeđene opcije prilagodbe

Budući da Collab Chat proširuje standardni widget za komentare, nasljeđuje sve opcije prilagodbe iz osnovnog widgeta. To uključuje prilagođene CSS klase, prilagođene prijevode, prilagodbu avatara, formatiranje datuma i još mnogo toga.

Pogledajte glavnu FastComments dokumentaciju o prilagodbi za potpuni popis dostupnih opcija prilagodbe.

Rad s prilagođenim fontovima

Ako vaša stranica koristi prilagođene fontove, Collab Chat UI će naslijediti te fontove iz CSS-a vaše stranice. Možda ćete morati stvoriti pravilo za prilagodbu widgeta i @import bilo kojih fontova u prilagođenom CSS-u u tom pravilu ako želite da plutajući prozor chata koristi iste fontove.

Sinkronizacija uživo Internal Link

Ažuriranja u stvarnom vremenu

Collab Chat koristi WebSocket veze za sinkronizaciju svih razgovora u stvarnom vremenu među svim povezanim korisnicima. Kada netko stvori novu bilješku, doda komentar ili obriše raspravu, svi ostali korisnici koji gledaju istu stranicu odmah vide ažuriranje bez osvježavanja.

Kako WebSocket sinkronizacija funkcionira

Kad inicijalizirate Collab Chat, widget uspostavlja WebSocket vezu s FastComments poslužiteljima. Ta veza ostaje otvorena tijekom trajanja korisničke sesije i sluša ažuriranja vezana uz trenutnu stranicu.

Sustav WebSocket koristi tri vrste broadcast poruka za Collab Chat. Događaj new-text-chat aktivira se kad netko kreira novu bilješku na stranici. Događaj updated-text-chat aktivira se kad netko ažurira postojeći razgovor. Događaj deleted-text-chat aktivira se kad netko obriše bilješku.

Sustav Broadcast ID-a

Kako bi se spriječio efekt odjeka u kojem korisnici vide svoje vlastite akcije kako im se vraćaju, svako ažuriranje uključuje jedinstveni broadcastId. Kad korisnik stvori ili ažurira bilješku, njegov klijent generira UUID za tu operaciju. Kada WebSocket emitira ažuriranje natrag svim klijentima, izvorni klijent zanemaruje ažuriranje jer odgovara njegovom vlastitom broadcastId.

To osigurava glatku interakciju u kojoj korisnici odmah vide svoje promjene u korisničkom sučelju bez čekanja na putovanje podataka kroz poslužitelj, a istovremeno jamči da svi ostali korisnici dobiju ažuriranje.

Broj korisnika uživo

Gornja traka prikazuje broj korisnika koji trenutno gledaju stranicu. Taj se broj ažurira u stvarnom vremenu kako se korisnici pridružuju i napuštaju. Broj korisnika se prenosi putem iste WebSocket veze i automatski se povećava/smanjuje na temelju događaja povezivanja i prekida veze.

Otpornost veze

Ako WebSocket veza padne zbog mrežnih problema ili održavanja poslužitelja, widget automatski pokušava ponovno uspostaviti vezu. Tijekom razdoblja ponovnog povezivanja, korisnici i dalje mogu raditi s postojećim bilješkama, ali neće vidjeti ažuriranja u stvarnom vremenu od drugih korisnika dok veza ne bude ponovno uspostavljena.

Nakon ponovnog povezivanja, widget se ponovo sinkronizira kako bi osigurao da nijedno ažuriranje nije propušteno. To se događa transparentno bez potrebe za intervencijom korisnika.

Razmatranja propusnosti

WebSocket poruke su male i sadrže samo osnovne informacije potrebne za sinkronizaciju stanja. Kreiranje nove bilješke obično koristi manje od 1KB propusnosti. Sustav također uključuje inteligentno grupiranje poruka kako bi se smanjila učestalost poruka tijekom perioda visoke aktivnosti.

Vaše metrike korištenja u FastComments nadzornoj ploči prate pubSubMessageCount i pubSubBandwidth kako biste mogli pratiti aktivnost sinkronizacije u stvarnom vremenu na vašim stranicama.

Sinkronizacija između kartica

Ako korisnik ima istu stranicu otvorenu u više pregledničkih kartica, ažuriranja u jednoj kartici pojavljuju se odmah u ostalim karticama. To radi putem istog WebSocket mehanizma sinkronizacije i ne zahtijeva dodatnu konfiguraciju.

Sigurnost

WebSocket poruke se prenose preko sigurnih veza (WSS) i uključuju provjeru tenanta kako bi se osiguralo da korisnici primaju samo ažuriranja za razgovore za koje su ovlašteni. Poslužitelj validira sve operacije prije njihovog emitiranja kako bi spriječio neovlašteni pristup ili manipulaciju.

Imate pitanja?

To je sve za FastComments Collab Chat! Ako imate bilo kakvih pitanja, trebate pomoć s implementacijom ili imate prijedloge za značajke, molimo obavijestite nas u nastavku ili se obratite našem timu za podršku.

Za primjere uživo, pogledajte Govscent.org koji koristi Collab Chat u produkciji.