Embed (loader.js) Support

This page gathers the most common reasons the widget fails when embedded on another site, plus quick checks.

Setup

The widget is embedded on another site with the script below. ROOM_UUID differs per room.

<script src="https://bitenta.com/embed/loader.js?room=ROOM_UUID" async></script>

It’s important that the host page is HTTPS and the script URL is also served over HTTPS.

First Checks If It’s Not Working

  • Is there a CSP or Mixed Content error in the browser console?
  • Does loader.js return 200 in the Network tab?
  • Are API calls (api/embed/...) blocked due to CORS?
  • Is camera/microphone permission requested over HTTPS?
  • Are Adblock/Privacy extensions blocking Pusher or WebSocket?

Script Not Loading

CSP

If the host site’s Content-Security-Policy blocks loading external scripts, loader.js won’t run at all. The console usually shows an error like Refused to load the script in the console.

Mixed Content

If the host site is HTTPS but the script is HTTP, the browser blocks it.

API Calls Blocked (CORS)

If the host site is a different origin, api/embed/... requests become cross-origin. If CORS permissions on the server aren’t correct, the browser blocks them.

Typical error: CORS policy

Camera/Microphone Not Opening

getUserMedia requires a secure context in most browsers. The host page must be HTTPS (localhost is an exception).

Typical error: NotAllowedError or SecurityError

WebSocket / WebRTC Blocks

Corporate networks may block WebSocket or STUN/TURN traffic. In that case, queue updates or the call stream may not arrive.

Check: Is a WSS connection established in the Network tab? Are ICE candidates being gathered?