Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: komunikace pomocí Window.postMessage()

V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
David Šabacký:18.2.2023 22:08

Ahoj všichni,

potřebuji zprovoznit komunikace pomocí posMessage(). Z jendoho okna inicializuji otevření jiného okna a potřebuji tam poslat parametry. Daří se mi něco poslat, na druhé straně to listener odchytně a zobrazí mi, že přijal nějaký object. Ale problém je v tom, že sice na

console.log(event.data)

vidím, že object byl přijat, ale nevím jak se dostanu na jednotlivé parametry, které posílá sender.

Díky za pomoc.

David

Zkusil jsem: Sender:

var domain = 'http://xxx';
var myPopup = window.open(domain + 'pasport/map/new_obj.html','myWindow');
message = '{"methos": "slide","args": "2"}'
console.log(message)
myPopup.postMessage(message, domain);

listener:

window.addEventListener('message',function(event) {
       if(event.origin !== 'http://property.smsdata.lcl') return;

       console.log(event.data)
       for (let index in event.data) {
        console.log(index);
        }
   },false);

Chci docílit: Potřebuji na listeneru vyhodnotit podmínku, co je v method, např.

if (event.data.method == 'slide')  {
        // do
}

ale nemůžu přijít na to, jak se dostat na hodnotu method z event.data.

 
Odpovědět
18.2.2023 22:08
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:1.3.2023 10:08

Zkus googlem zkouknout dokumentace pro tvuj prohlizec nebo i pro ty dalsi. Obvykle tam byvaji zajimave informace, ktere v dokumentaci pro tvuj prohlizec treba nenajdes. Nebo nejake priklady, take googlem :)

https://developer.mozilla.org/…/postMessage
Podle vseho, postMessage odesila stirng.
message = '{"methos": "slide","args": "2"}' - Ty to tam vkladas take jako string
if (event.data.method == 'slide') - Takze, tohle se jevi jako nesmysl, nejdriv by to melo jit pres JSON.parse(), ne?

Zkus si tam pridat vypsani, co je v data.

alert(event.data)
console.log(event.data)
console.log(typeof event.data)
Editováno 1.3.2023 10:09
 
Nahoru Odpovědět
1.3.2023 10:08
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.