Autor Zpráva
Hadžim
Profil
Ahoj, mám už zas problém :),
řekněme, že mám nějaká data o osobách, pokud chci data upravit, tak se mi otevře javascriptem nová stránka, kde se objeví formulář se všemi daty předvyplněnými, já něco změním, odešlu a toto okno se mi zavře... Jenže původní stránka samozřejmě zůstane neaktualizovaná. Nevíte, jak ji nějak aktualizovat v souvislosti se zpracováním toho formuláře??? Nejde mi o to, že bych to třeba nechával po 30s aktualizovat automaticky, to je k ničemu, rád bych to vázal na tuto akci. Dík moc...
Fred
Profil
Tak jsem to zkusil, protože je to zajímavý dotaz, použil jsem kousek Yuhůovi fičurky s httpGetVars , protože jsem nevěděl jak ty data načítáš do toho popupu, budeš si to muset upravit. Tyhle dvě okna spolu trochu komunikují, i když bych řekl, že to je nic moc a určitě by to asi bylo lepší v php. Takže okno jedna

okno co to otvírá

<script type="text/javascript">
function control() {
windowprops = "location=no,scrollbars=yes,menubars=no,toolbars=no,resizable=yes,heig ht=530,width=1030," ;
var URL = "bgcontrol.html?pozadi=" + document.getElementById('barva').value +"&amp;"; //if you need change names
popup = window.open(URL,"control",windowprops);
}
</script>


<input type="text" id="barva" value="red">
<input type="button" value="otevřít test barev" onclick="control();">


popup okno co to posílá zpátky

<script type="text/javascript">
<!--
var httpGetVars=new Array();
var px;
var pole = window.location.search.substr(1).split("&");
for(i=0;i<pole.length;i++){httpGetVars[pole[i].split("=")[0]]=unescape (pole[i].split("=")[1]);}
function init(){
document.body.style.background=httpGetVars["pozadi"];
document.getElementById('popbarva').value=httpGetVars["pozadi"];
}
function posliTozpatky(){
opener.document.getElementById('barva').value=document.getElementById( 'popbarva').value;
opener.document.body.style.background=document.getElementById('popbarv a').value;
}
function addEvent(obj,evType,fn){
if(obj.addEventListener){
obj.addEventListener(evType,fn,true);
return true;
}else if(obj.attachEvent){
var r = obj.attachEvent("on"+evType,fn);
return r;
}else{
return false;
}}
addEvent(window,'load',init);
addEvent(window,'unload',posliTozpatky);
//-->
</script>

<input type="text" id="popbarva" value="">
<input type="button" value="potvrdit změny" onclick="posliTozpatky();">
habendorf
Profil
Čistě ta aktualizace jde udělat pomocí location.reload();
Horší už to je s předáním informací pop-up => opener. Dá se přes URL, jak píše Fred, nebo přes window.showModalDialog();. Podařilo se mi sice zprovoznit předání informací z pop-upu do openeru, ale z nějakého tajemného důvodu mi to vždy nakonec otevřelo ještě jedno nežádoucí okno (při použití window.showModalDialog()).
Ještě mě napadá, že formulář v pop-upu může mít atribut target="něco", ale nevím jak místo toho "něco" zacílit opener. Zkoušel jsem document.referrer, ale bez úspěchu.
Osobně bych to řešil tak, že
1) formulář pro změnu údajů bych neotvíral do nového okna,
2) nebo když už musí být v novém okně, tak ne pomocí JS, ale pomocí target="_blank"
Tím by ses vyhnul spoustě problémů a vyhnul by ses i obecným omezením spojeným s JS (vypnutý JS apod.).
Toto téma je uzamčeno. Odpověď nelze zaslat.

0