Теория здесь следующая. Броузеры загружают файлы в себя (в окна, во фреймы) асинхронно. Делают это они в отдельных потоках. И заранее не известно, когда произойдет процесс полной загрузки. Причём Fire Fox и Opera делают это со свойственными им прибамбасами. В то же время javascript продолжает работать...
см.
http://javascript.ru/window.open
Это значит, что в общем случае, когда Вы объявили
newWin = window.open("dotter.html", "_blank" , params) и сразу следующей строкой назначили функцию окну newWin.setValue = function() ....,то
функция setValue хоть и присвоится окну, но после загрузки страницы в окно сразу же затрётся телом загруженного документа (в Вашем случае dotter.html)
Поэтому функцию доступа к объектам материнского окна необходимо вставлять в текст скрипта дочернего окна (в dotter.html)
пример.
материнская форма:
<form>
<input type="text" name="getvalue" id="getvalue" value="abcd">
</form>
<script type="text/javascript">
function newwin()
{
var params = "left=100px, top=300px, width=500px, height=200px";
newWin = window.open("dotter.html", "_blank", params)
newWin.focus();
}
</script>
<a href="javascript
:newwin()">start newwin</a>
дочерняя форма (dotter.html):
<script type="text/javascript">
function buttononclick()
{
window.opener.document.getElementById('getvalue'). value = document.getElementById('dotterinput').value;
}
</script>
<input name=dotterinput id=dotterinput type="text" value="12345">
<button onclick=buttononclick()>GO</button>
Это работает в Opera, Fire Fox, Google Chrome и даже в IE 6.
Хочу предупредить, что если Вы экспериментируете со скриптами на локальном компьютере, то Google Chrome хоть и показывает объект window.opener, но дальше никуда не пускает. Он не показывает window.opener.document, соответственно нельзя воспользоваться window.opener.document.getElementById(). Но это не страшно, т.к. после загрузки скриптов на реальный сервер Google Chrome "попускает"
В некоторых случаях для получения доступа из дочернего окна к элементам материского окна прийдётся указать document.domain='lalalala.com'
А вообще мой совет - не используйте window.open(). Практически его оставили только для совместимости со старыми скриптами. Всплывающие окна, вызванные window.open() сейчас раздражают большинство людей. Какая альтернатива? - На этом сайте в какой-то статье описывалось как создать свои собственные окна на примере замены стандартного "alert()"