Diskuze: Posuvanie premennych atd do noveho okna

JavaScript JavaScript Posuvanie premennych atd do noveho okna

Aktivity (1)
Avatar
Matej
Člen
Avatar
Matej:7.1.2015 19:48

Nazdar,

daju sa cez JS posuvat premenne, funkcie atd do noveho okna , resp. otvoreneho cez window.open alebo klasicky cez a tag ?
Alebo nato treba daky back-end jazyk.

Skusal som

var rodic="som rodic";
window.test=rodic;
document.getElementById("tlacitko").addEventListener("click",function(){
var x=window.open("blabla.html");
x.rodicstranky=rodic;
// na dalsej stranke
alert(x.rodicstranky);
alert(rodicstranky);
alert(window.opener.rodic);
alert(window.opener.test);
},true)

Avsak ziadna metoda neposunula
variabilnu do dalsej stranky

Dik za odpovede.

Editováno 7.1.2015 19:50
 
Odpovědět 7.1.2015 19:48
Avatar
admin
Člen
Avatar
admin:7.1.2015 19:55

Lze pres window.opener­.document.for­ms. :`

Editováno 7.1.2015 19:56
 
Nahoru Odpovědět 7.1.2015 19:55
Avatar
Matej
Člen
Avatar
Matej:7.1.2015 20:05

Neziskal by som tymto sposobom z "parent" stranky maximalne value nejakeho inputu v <form> ?

Editováno 7.1.2015 20:05
 
Nahoru Odpovědět 7.1.2015 20:05
Avatar
Odpovídá na Matej
Michal Žůrek (misaz):8.1.2015 7:50

Jde si proměné uložit do session storage nebo lze stránkám přes speciální API (postMessage API) posílat informace.

Přes session storage to lze uložit do "registru" klíš-hodnota.

// uložit do session
window.sessionStrage.set("klic", "hodnota");
// načíst ze session
hodnota = window.sessionStorage.get("klic");

Nezapomeňte že session v JavaScriptu není závislý na session v PHP, tahle to nejde. Jen kdyby to někdo netušil. :)

Na stack overflow je na můj vkus dost hnusné řešení, že data uložíte do cookies a ty pak v intervalu aktualizujete. No...

Řešení přes postMessage API to lze provést následovně.

// odelsat zprávu, odesilátelem se certifikuješ abys nezpracovával cizí zprávy...
window.postMessage("zprava", "odesilatel");

// přijetí zprávy
window.addEventListener("message", function(event) {
    if (event.origin === "odesilatel") { // zkontroluješ odesílatele
        zprava = event.data;
    }
});
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět 8.1.2015 7:50
Nesnáším {}, proto se jim vyhýbám.
Avatar
Matej
Člen
Avatar
Odpovídá na Michal Žůrek (misaz)
Matej:8.1.2015 15:03

Session storage ma napadlo ale napacila sa mi ta metoda , postMessage je to co som hladal :)

takze "zprava" = data ktore chcem poslat a "odesilatel" je URL z ktoreho to chcem poslat? //MDN mi nejako nechce nacitat

 
Nahoru Odpovědět 8.1.2015 15:03
Avatar
Odpovídá na Matej
Michal Žůrek (misaz):8.1.2015 15:52

Odesilatel by měla být doména na které script bezi, ale nezkoušel jsem to, tak nevím.

Nahoru Odpovědět 8.1.2015 15:52
Nesnáším {}, proto se jim vyhýbám.
Avatar
Matej
Člen
Avatar
Odpovídá na Michal Žůrek (misaz)
Matej:8.1.2015 15:57

Ok dik , MDN uz bezi , Odesilatel=stranka na ktoru chcem dane data poslat

Editováno 8.1.2015 15:58
 
Nahoru Odpovědět 8.1.2015 15:57
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 7 zpráv z 7.