Plattformguider 28. mars 2026

Slik legger du til en videoboble i React eller Vue

Slik legger du til og tester en videoboble i React eller Vue, håndterer klientlasting, ruter, mobilvisning, tilgjengelighet og ytelse.

Slik legger du til en videoboble i React eller Vue

Kort fortalt

  • Når du har hentet integrasjonskoden fra CompleteGreet, kan oppsettet i React eller Vue være enkelt. Tidsbruken avhenger av rammeverk, arkitektur og testing.
  • Tilgjengelige innstillinger kan styre når boblen vises og hvilke ruter den vises på. Kontroller funksjonene i den gjeldende løsningen.
  • Test alltid videoboblen på faktiske enheter. Verktøy som bare endrer størrelsen på nettleservinduet, fanger ikke opp alt.

Hvordan installerer du CompleteGreet i React eller Vue?

En videoboble kan legges til i React eller Vue med integrasjonskoden fra CompleteGreet. Den riktige metoden avhenger av prosjektet og om sidene rendres i nettleseren eller på serveren. Følg den gjeldende installasjonsveiledningen fremfor å anta at samme kode passer overalt.

Illustrasjon av hvordan CompleteGreet installeres i React eller Vue

En vanlig arbeidsflyt ser slik ut:

  1. Logg inn i CompleteGreet og åpne området for installasjon eller nettsteder. Navnet på menyen kan endres mellom versjoner.
  2. Velg plattformen eller integrasjonsmetoden som passer prosjektet. For et vanlig React eller Vue-oppsett kan en generell HTML-integrasjon være aktuell.
  3. Kopier koden som vises for nettstedet ditt. Kontroller at den inneholder riktig nettsted-ID og kommer fra kontoen din.
  4. Legg koden på stedet som rammeverkets og CompleteGreets gjeldende dokumentasjon anbefaler, og lagre endringen.
  5. Start utviklingsmiljøet og besøk flere ruter. Kontroller hvor widgeten vises og om den lastes uten feil.

Hvis boblen ikke vises, kontroller hurtigbuffer, konsollfeil, domeneregler og samtykkeinnstillinger før du endrer koden.

Hva med Next.js og Nuxt?

Med Next.js eller Nuxt må du ta hensyn til serverrendering. Widgetkode som bruker nettleserobjekter, må bare kjøres på klientsiden.

I Next.js bør du bruke den klientbaserte skriptmetoden som anbefales for den versjonen prosjektet kjører. Kontroller lastestrategien og test at widgeten ikke skaper hydreringsfeil.

I Nuxt kan en klientbasert plugin eller en annen dokumentert metode brukes. Filnavn og konfigurasjon varierer mellom Nuxt-versjoner, så sammenlign med den aktuelle Nuxt-dokumentasjonen før du implementerer.

Når widgeten er lastet, må du teste hvordan den oppfører seg ved ruteendringer. Ikke anta at den automatisk beholder riktig tilstand på alle ruter.

Hva kan du tilpasse i React eller Vue?

Målretting etter side og besøkende

Hvis kontoen tilbyr sideregler, kan du velge bestemte ruter, for eksempel en pris- eller demoside. Andre betingelser, som enhet, tid på siden eller rulledybde, må kontrolleres i den gjeldende planen.

Illustrasjon av hva som kan tilpasses for en videoboble i React eller Vue

Regler som administreres i panelet kan oppdateres uten en ny utrulling av selve nettstedet. Test likevel hvordan endringen lastes inn i den aktuelle integrasjonen.

Handlinger og klikkoppførsel

Knappen i videoboblen kan bruke handlingene som tilbys i kontoen, for eksempel å åpne en nettadresse eller starte en annen godkjent handling. Ikke bygg rundt en integrasjon før du har bekreftet at den støttes.

Hvis CompleteGreet tilbyr dokumenterte hendelser eller API-er for React eller Vue, kan de kobles til applikasjonslogikken. Hold integrasjonen adskilt fra ruting og tilstand, og test feiltilfeller.

Skjemafelt og ruting av henvendelser

Hvis planen inneholder et skjema, kan du velge tilgjengelige felt og etiketter. Be bare om opplysninger du trenger, og kontroller validering og samtykke før publisering.

Innsendinger kan eventuelt sendes videre med støttede integrasjoner eller webhooker. Bekreft hvilke mål som finnes, og unngå å sende personopplysninger til en kanal uten riktig tilgangskontroll.

Visuell profil og plassering

Tilpass tilgjengelige farger, hjørner og miniatyrbilde til nettstedet. Velg en plassering som ikke kolliderer med fast navigasjon, chat, handlekurv eller andre flytende elementer.

Blant videowidgets for moderne nettsteder bør du kontrollere hvordan skrifter og CSS arves i akkurat ditt prosjekt. Ikke regn med at typografien alltid tilpasses automatisk uten testing.

#cg-ig-PL8 {
–cg-primary: #3D5ACE;
–cg-accent: #E48333;
–cg-bg: #f7f7fb;
–cg-border: #e2e2ea;
–cg-text: #1a1a2e;
–cg-text-sec: #4a4a68;
–cg-text-muted: #7a7a96;
–cg-white: #ffffff;
font-family: -apple-system, BlinkMacSystemFont, “Segoe UI”, Roboto, Helvetica, Arial, sans-serif;
background: var(–cg-bg);
border: 1px solid var(–cg-border);
border-radius: 12px;
max-width: 600px;
margin: 0 auto;
overflow: hidden;
}
#cg-ig-PL8 .cg-accent-bar {
height: 4px;
background: var(–cg-primary);
}
#cg-ig-PL8 .cg-header {
padding: 24px 24px 16px;
text-align: center;
}
#cg-ig-PL8 .cg-header h3 {
margin: 0 0 8px;
font-size: 20px;
font-weight: 700;
color: var(–cg-text);
line-height: 1.3;
}
#cg-ig-PL8 .cg-header p {
margin: 0;
font-size: 14px;
color: var(–cg-text-sec);
line-height: 1.5;
}
#cg-ig-PL8 .cg-progress {
display: flex;
justify-content: space-between;
padding: 0 32px 24px;
position: relative;
}
#cg-ig-PL8 .cg-progress::before {
content: ”;
position: absolute;
top: 12px;
left: 48px;
right: 48px;
height: 2px;
background: var(–cg-border);
z-index: 0;
}
#cg-ig-PL8 .cg-progress-step {
width: 28px;
height: 28px;
border-radius: 50%;
background: var(–cg-white);
border: 2px solid var(–cg-border);
display: flex;
align-items: center;
justify-content: center;
font-size: 12px;
font-weight: 700;
color: var(–cg-text-muted);
position: relative;
z-index: 1;
}
#cg-ig-PL8 .cg-progress-step.active {
border-color: var(–cg-primary);
background: var(–cg-primary);
color: var(–cg-white);
}
#cg-ig-PL8 .cg-progress-step.complete {
border-color: var(–cg-primary);
background: var(–cg-white);
color: var(–cg-primary);
}
#cg-ig-PL8 .cg-steps {
padding: 0 24px 24px;
}
#cg-ig-PL8 .cg-step {
display: flex;
gap: 16px;
margin-bottom: 20px;
position: relative;
}
#cg-ig-PL8 .cg-step:last-child {
margin-bottom: 0;
}
#cg-ig-PL8 .cg-step-badge {
width: 32px;
height: 32px;
border-radius: 50%;
background: var(–cg-primary);
color: var(–cg-white);
display: flex;
align-items: center;
justify-content: center;
font-size: 14px;
font-weight: 700;
flex-shrink: 0;
}
#cg-ig-PL8 .cg-step-content {
flex: 1;
background: var(–cg-white);
border: 1px solid var(–cg-border);
border-radius: 8px;
padding: 16px;
}
#cg-ig-PL8 .cg-step-title {
font-size: 15px;
font-weight: 600;
color: var(–cg-text);
margin: 0 0 6px;
}
#cg-ig-PL8 .cg-step-desc {
font-size: 13px;
color: var(–cg-text-sec);
margin: 0 0 12px;
line-height: 1.5;
}
#cg-ig-PL8 .cg-code-block {
background: #1a1a2e;
border-radius: 6px;
padding: 12px 40px 12px 12px;
position: relative;
overflow-x: auto;
}
#cg-ig-PL8 .cg-code-block pre {
margin: 0;
font-family: “SF Mono”, Monaco, “Cascadia Code”, “Roboto Mono”, Consolas, “Courier New”, monospace;
font-size: 12px;
line-height: 1.6;
color: #e2e2ea;
white-space: pre-wrap;
word-break: break-word;
}
#cg-ig-PL8 .cg-code-block .cg-copy-btn {
position: absolute;
top: 8px;
right: 8px;
background: var(–cg-accent);
color: var(–cg-white);
border: none;
border-radius: 4px;
padding: 4px 10px;
font-size: 11px;
font-weight: 600;
cursor: default;
}
#cg-ig-PL8 .cg-cta {
padding: 0 24px 24px;
text-align: center;
}
#cg-ig-PL8 .cg-cta-btn {
display: inline-block;
background: var(–cg-primary);
color: var(–cg-white);
text-decoration: none;
font-size: 15px;
font-weight: 600;
padding: 14px 28px;
border-radius: 8px;
transition: background 0.2s;
}
#cg-ig-PL8 .cg-cta-btn:hover {
background: #2f48a8;
}
#cg-ig-PL8 .cg-source {
text-align: center;
padding: 0 24px 20px;
font-size: 11px;
color: var(–cg-text-muted);
}
#cg-ig-PL8 .cg-source a {
color: var(–cg-text-muted);
text-decoration: none;
}
@media (max-width: 480px) {
#cg-ig-PL8 .cg-header {
padding: 20px 16px 12px;
}
#cg-ig-PL8 .cg-progress {
padding: 0 20px 20px;
}
#cg-ig-PL8 .cg-progress::before {
left: 32px;
right: 32px;
}
#cg-ig-PL8 .cg-steps {
padding: 0 16px 20px;
}
#cg-ig-PL8 .cg-step {
gap: 12px;
}
#cg-ig-PL8 .cg-step-content {
padding: 14px;
}
#cg-ig-PL8 .cg-cta {
padding: 0 16px 20px;
}
#cg-ig-PL8 .cg-cta-btn {
padding: 12px 20px;
font-size: 14px;
width: 100%;
box-sizing: border-box;
}
}
Illustrasjon av en arbeidsflyt i fem trinn for å legge til en CompleteGreet-videoboble i et React eller Vue-prosjekt.

Installer CompleteGreet i React eller Vue

Eksempel på en enkel arbeidsflyt

1
2
3
4
5

1

Opprett en konto

Opprett en CompleteGreet-konto og hent nettsted-ID-en eller integrasjonskoden som vises i panelet.

2

Velg installasjonsmetode

Bruk metoden som den gjeldende CompleteGreet-dokumentasjonen anbefaler for prosjektet ditt.

Hent gjeldende integrasjonskode fra CompleteGreet-kontoen din.

3

Koble integrasjonen til prosjektet

Følg det dokumenterte eksempelet for React, Vue eller vanlig HTML i den versjonen du bruker.

Bruk den gjeldende import- eller skriptkoden fra dokumentasjonen.

4

Legg widgeten til i appen

Plasser integrasjonen i rotoppsettet eller den klientbaserte delen som er anbefalt for arkitekturen din.

Legg inn nettsted-ID-en med metoden som dokumentasjonen angir.

5

Tilpass og publiser

Legg til videoen, velg tilgjengelige farger og regler, og test hele opplevelsen før publisering.

Kilde: eksempeloppsett basert på artikkelens arbeidsflyt

Se den statiske oversikten ovenfor for hele arbeidsflyten.

Hva bør du kontrollere før publisering?

Test videoboblen på faktiske enheter før publisering. iOS Safari og Chrome på mobil kan oppføre seg forskjellig, og den flytende knappen må fungere sammen med navigasjonen.

Mål Core Web Vitals før og etter installasjonen. En videoboble bør ikke skyve viktige ytelsesmålinger over grensene i den gjeldende veiledningen. Googles veiledning for Web Vitals forklarer hvordan du vurderer layoutendringer og andre målinger. Kontroller at plassen til widgeten ikke flytter innhold mens skriptet lastes.

Gå gjennom sidereglene på alle relevante ruter. I React og Vue kan widgeten bli liggende ved ruteendringer eller lastes på nytt, avhengig av hvor og hvordan integrasjonen er plassert.

Bekreft at hilsenen bare vises på de valgte nettadressene, og at den skjules i kasseflyt, kontoer eller private områder der den ikke hører hjemme.

Mobildata blir ofte glemt i testingen.

En bakgrunnsvideo som starter automatisk på hver side, kan bruke unødvendig mye data. Vis heller en statisk miniatyr med en tydelig avspillingsknapp, slik at den besøkende selv velger når videoen lastes.

Kontroller også lagrekkefølgen mot modaler, menyer og skuffer. En hamburgermeny kan havne under videoboblen, eller boblen kan bli skjult bak et popupvindu. Slike konflikter vises ofte først i det faktiske nettstedet.

Test til slutt hele besøksreisen som en utlogget bruker. Tøm hurtigbuffer og relevante informasjonskapsler, og gå fra landingsside til ønsket handling. En videoboble skal føles som en naturlig del av opplevelsen, ikke som et forstyrrende popupvindu.

En videoboble i React eller Vue legges vanligvis inn med en ekstern integrasjon som lastes ved siden av applikasjonen. Kontroller hvordan skriptet påvirker renderingen i stedet for å anta at det aldri blokkerer eller skaper feil.

Arbeidsflyten nedenfor viser hvor integrasjonen ofte plasseres i en enkeltsideapplikasjon, og hvilke tester som er nødvendige på tvers av ruter.

Logg inn i CompleteGreet, opprett eller velg nettstedet og hent den gjeldende installasjonsinformasjonen. Plattformvalgene i panelet kan endres, så bruk instruksjonen som faktisk vises i kontoen.

Kopier skriptet eller integrasjonskoden fra installasjonsvisningen. Den skal inneholde riktig nettsted-ID.

Hent den gjeldende skriptkoden fra CompleteGreet-kontoen din.
  1. Finn hovedmalen, rotoppsettet eller den klientbaserte inngangen i prosjektet.
  2. Plasser koden der den gjeldende veiledningen for rammeverket og CompleteGreet anbefaler. I serverrenderte apper må nettleserkode ikke kjøres på serveren.
  3. Lagre endringen og start utviklingsmiljøet på nytt hvis byggeverktøyet krever det.

Selv om integrasjonen kan lastes asynkront, må du måle effekten på Time to Interactive og andre relevante ytelsesmålinger i den faktiske appen.

Hvis du bruker React Router eller Vue Router, må du teste om boblen og videotilstanden følger ruteendringer riktig. Oppførselen kan avhenge av integrasjonen og versjonen.

Ikke bruk en generell prosent for flere henvendelser som forventning. Sammenlign kvalifiserte henvendelser før og etter testen på sider med tydelig intensjon.

Test både datamaskin og mobil før produksjon. Boblen skal være synlig uten å dekke innhold, og kontroller eller tillatelser må følge W3Cs veiledning for tilgjengelighet slik at tastatur og skjermleser fungerer så godt som mulig.

Vanlige spørsmål

Hvordan legger jeg til CompleteGreet i React uten å gjøre pakken unødvendig stor?

Bruk den integrasjonsmetoden som anbefales i den gjeldende dokumentasjonen. Mål pakkestørrelse, nettverksforespørsler og renderingsytelse før og etter, fordi ingen ekstern ressurs er helt uten kostnad.

Hvorfor vises ikke CompleteGreet-boblen under lokal utvikling i React?

Kontroller først nettadressen og porten mot domenereglene i kontoen. Se deretter etter konsollfeil, blokkering fra samtykkeverktøy, hurtigbuffer og om skriptet faktisk lastes.

Gjør CompleteGreet React-appen tregere?

Enhver ekstern integrasjon kan påvirke ytelsen. Mål Core Web Vitals, nettverk, hovedtråden og videolasting på representative sider og enheter i stedet for å stole på et fast filstørrelses- eller tidsløfte.

Kan jeg vise ulike CompleteGreet-videoer på forskjellige ruter i React Router?

Det avhenger av hvilke kampanje-, rute- og API-funksjoner den gjeldende CompleteGreet-løsningen tilbyr. Bruk bare dokumenterte metoder, og test hvordan widgeten oppdateres når nettadressen endres.

Fungerer CompleteGreet med serverrenderte React-rammeverk som Next.js?

En klientbasert integrasjon kan fungere i serverrenderte rammeverk når den lastes på riktig sted. Følg dokumentasjonen for den aktuelle Next.js-versjonen, og test at koden ikke kjøres på serveren eller skaper hydreringsfeil.

Hva koster CompleteGreet for en React-basert SaaS-tjeneste med omtrent 10 000 månedlige besøkende?

Pris, besøksgrense og beregningsmodell kan endres. Bruk den gjeldende prissiden eller kontoen til å finne riktig plan, og kontroller hvordan unike besøkende og eventuelle overskridelser behandles.

Azad Habib

Azad Habib

CEO & Founder of CompleteGreet

Azad Habib is the founder of CompleteGreet. With a background in ecommerce and user experience, he works at the intersection of trust, clarity, and conversion to help businesses make their websites feel more human from the first click.