Ombyggnad 2026/2027 pågår - döda länkar förekommer. Mer information

Bädda in externt webbinnehåll med Shadow DOM

2020-09-29 på Anders Ytterströms webblogg

Ett vanligt önskemål som jag ofta hört under mina 2 decennier som yrkesverksam webbutvecklare är att bädda in ("ajfrejma in") externt innehåll på sin egen webbplats.

Det skulle kunna vara något av följande:

Behovet kommer ifrån att man vill behålla besökare på den egna webbplatsen istället för att besökarna ska klicka sig vidare. Helst ska webbplatsen även tillgodose sig innehållet och sökmotorindexera det som tillhörande den egna webbplatsen.

Då utvecklingstid är dyrt så ska det helst också kunna göras supersnabbt och smidigt, framför att skriva en egen backend-lösning som kräver egen CSS och formgivning.

Det är kort och gott nästa svårighetsnivå från enklare widgets såsom chatt till hemsida, som är relativt smidigt och rättframt.

Först: exempel på lyckad inbäddning!

Jag har förkovrat mig i detta på jobbet nyligen, och kan därför visa att tipsen och lärdomarna jag skriver om i detta blogginlägg fungerar.

ATGs kundtjänst är nämligen en s.k. Mega-widget helt integrerad på deras webbplats, med JavaScript och utan iframes. En googling av "Hur spelar jag en SpikHarry?" visar också att inbäddningen kan indexeras av sökmotorer.

Magin för att bädda in är inte mer avancerad än ett par rader HTML som klistras in på webbplatsen.

<div id="embed-placeholder" data-base-url="https://example.com"></div>
<script src="https://example.com/embed.js"></script>

Varför inte bara använda iframes?

Den enkla och pragmatiska vägen har länge varit iframes, som har massor med problem för såväl sökmotorindexering som tillgänglighet.

Det har faktiskt blivit avsevärt enklare numera tack vare ett par stora saker.

Shadow DOM?

Konceptet Shadow DOM är en nyckelkomponent i Web Components.

Förenklat går det ut på att ett sandboxat DOM-träd monteras inuti ett DOM-element, med document.querySelector('what-ever').attachShadow().

Inuti detta träd ärvs (nästan) ingen CSS och all JavaScript kan köras isolerat. Under huven på webbläsarna så sköts även rendering av Shadow DOMs separat från host-dokumentet och andra Shadows DOM:s i detta.

Fördelar med Shadow DOM över iframes

Begränsningar i Shadow DOM

Tips för att skriva bra inbäddat innehåll

Ytterligare Sökmotoroptimering


Ovanstående inlägg publicerades 2020-09-29. Det går att prenumerera på denna webblogg. Härifrån är följande mål rekommenderade: