popForm.window.onload=get_elements();
^ Это выполняет get_elements, а не присваивает его событию onload.
popForm.window.onload=get_elements;
^ Это то, как вы назначаете функцию обработчику загрузки, но это то, что вы должны делать в заголовке документа, а не так, как пытаетесь.
popForm = window.open("form.html","aWindow","height=500,width=400");
popForm.window.onload = get_elements;
^ В этом коде у вас есть условие гонки.В некоторых случаях popForm.window
будет загружен 1-й строкой перед выполнением 2-й строки.Событие onload сработает только один раз, поэтому, если вы не назначите обработчик до его запуска, вторая строка бесполезна.В других случаях popForm.window
даже не будет существовать при выполнении 2-й строки, что делает невозможным присвоение функции обработчику события onload
.
Обычный метод обработки этой ситуации, если у вас есть контрольнад содержимым в дочернем окне, это поместить этот код внутри дочернего:
formObject = document.forms["link_form"];
formObject.elements["id_title"].value = window.opener.title;
formObject.elements["id_url"].value = window.opener.url;
Если у вас нет контроля над содержимым дочернего окна, вам нужно подождать, пока документ внутри iframeполностью загружен.Нет никакого способа узнать это от родителя, кроме как продолжать проверять снова и снова.Используйте код как показано ниже.
popForm = window.open("form.html","aWindow","height=500,width=400");
function waitForChild() {
if (! popForm.window ) setTimeout(waitForChild, 1000);
else get_elements();
}
waitForChild();