Istnieje także możliwość przesłania informacji bez potrzeby przeładowywania iframe’a. W analogiczny sposób można odebrać informacje od iframe’a.
Wysłanie eventu:
<body>
<iframe id="iframe" src="https://iframe.hogs.live/"></iframe>
</body>
<script>
const iframe = document.getElementById('iframe');
function sendEventToIframe(data) {
iframe.contentWindow.postMessage(data, '*');
}
sendEventToIframe('sth');
</script>
Odebranie eventu:
window.addEventListener('message', (event) => {
console.log('Dane z iframe: ', event.data);
});
Model eventu
interface Event {
type: string;
data: any;
}
Eventy przyjowane przez iframe’a
| Nazwa | Dane | Uwagi |
| calculateRoute | wartość parametru options dla mode= calculateRoute | Żądanie wyznaczenia trasy |
| setLang | ENG | DEU | CZE | ESP | FRA | POL | RUS | UKR | Dynamiczna podmiana języka. Wywołuje ponowny render mapy |
Eventy emitowane
| Nazwa | Dane | Uwagi |
| calculationSucces | format opisany tutaj | Emit z odpowiedzią o wyznaczonej trasie |
| error | Komunikat o błędzie | |
| warning | Komunikat z ostrzeżeniem |