
Předání hodnoty inputu do nově otevřeného okna
Mám okno, ve kterém je formulář, obsahující textové pole. Potřebuju, aby se po kliknutí na tlačítko v tomto okně otevřelo nové okno, rovněž obsahující formulář, do něhož potřebuju přenést hodnotu z pole v 1. okně. Potřebuju, aby to fungovalo min. v IE 6+, FF 3, Google Chrome.
Můj demo zjenodušený pokus
index.html (1. okno z něhož přenáším hodnotu):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<script src="pokus.js"></script>
</head>
<body>
<form name="LANSA" method="post">
<input type="text" id="text" value="0123456789" /><br /><br />
<input type="button" id="butt_text" value="Přenes data" onclick="javascript: okno();" />
</form>
</body>
</html>
okno.html (2. okno, do kterého přenáším hodnotu):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<script src="pokus.js"></script>
</head>
<body>
<form name="LANSA" method="post">
<input type="text" id="text1" />
<input type="text" id="text2" />
</form>
</body>
</html>
pokus.js
function okno() {
var win = window.open("./okno.html", "", "");
win.addEventListener("load", prenesData(win, document), false);
}
function prenesData(win, doc) {
win.document.getElementById("text1").value = "ahoj";
win.document.getElementById("text2").value = doc.getElementById("text").value;
}
V prvním řádku fce prenesData natvrdo přiřadím nějakou hodnotu prvnímu inputu - kontrola, že volání inputů v nově otevřeném okně je v pořádku. Ve druhém řádku pak přiřadím hodnotu z prvního okna.
Jenže:
1. Toto funguje v IE, Ve FF ani GCH se hodnoty nepředají (a to ani ta, co přiřazuji natvrdo). FF vypíše win.document.getElementById("text1").is null;
2. Přidám na začátek fce prenesData příkaz alert("prenesData()"); Nyní se hodnoty v IE 6 a FF vyplní, v GCh stále ne.
3. Zakomentuji alert a místo něj dám while, který by měl čekat, dokud se inputy nevytvoří:
while (win.document.getElementById("text2") == null) {
var a = 1;
}
V IE 6 funguje, v FF a Gch se věčně zacyklí.
Nemáte tip, jak to napsat, aby to fungovalo všude?
Tak jsem se nakonec dopracovala k tomuhle kódu:
Tohle funguje v IE i ve FF a Opeře. V Google Chrome ne. Bohužel jen do okamžiku, než zakomentuji alert v prenesData(). Pak to funguje jen v IE, ale v ostatních se data nepředávají. Nemáte nějaký nápad, jak to udělat bez alertu?