Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Вернуть элемент по window.opener или что-то... (https://javascript.ru/forum/dom-window/13283-vernut-ehlement-po-window-opener-ili-chto.html)

ded-mazay 24.11.2010 14:04

Вернуть элемент по window.opener или что-то...
 
Доброго времени уважаемые!
В основном окне имеем такой код
<script language="JavaScript" src="scripts.js"></script>


<form method=post name=\"s_add\" id=\"s_add\">
<select name=\"city\" id=\"city\">....
<a href=\"javascript:open_window('other_city.php', '800', '600')\">другой город</a>

В scripts.js:
function open_window(link,w,h)
{
	var features, w, h;
	var top = (screen.height - h)/2, left = (screen.width - w)/2;
	if(top < 0) top = 0;
	if(left < 0) left = 0;
	features = 'top=' + top + ',left=' +left;
	features += ',height=' + h + ',width=' + w + ',menubar=no,location=no,resizable=no,scrollbars=yes,status=1';
	newWin = open(link, 'displayWindow', features);
}

В открываемом по window.open other_city.php
<a href=\"javascript:window.opener.document.s_add.city.options.add(new Option('Екатеринбург (2)','xxxx',true,true));self.close()\">Екатеринбург</a>

т.е. открываем окно, выбираем город которого небыло в выпадающем списке, пытаеемся его добавить в форму на первом скрипте.
С оперой и мозилой все летает на ура, эксплорер никак не хочет работать, на сколько я понимаю потомучто он "не признаёт элементы, созданные в другом окне"..
Как реализовать чтоб везде работало?

ksa 24.11.2010 15:35

Цитата:

Сообщение от ded-mazay
потомучто он "не признаёт элементы, созданные в другом окне"..

Все он признаёт... :) Вопрос только какими методами все это сделано...
Если например, для получения ссылки на элемент использовать

obj=document.getElementById('нужный_ИД')


для создания элементов использовать

o=document.createElement('тег')


для добавления элемента в другой элемент использовать

obj.appendChild(o)


вроде работало всегда и везде...

Kolyaj 24.11.2010 15:47

Цитата:

Сообщение от ded-mazay
new Option

Вот этот вот option создаётся в одном документе, а вставляется в другой. IE не любит такие выкрутасы. Создавайте элемент через
opener.document.createElement('option')

ded-mazay 24.11.2010 15:52

Всем спасибо!
Сделал вобщем так:
В scripts.js добавил
function ins_city(city_id,city_name) {
	document.s_add.city.options.add(new Option(city_name,city_id,true,true));
}


Ссылки во всплывающем окне заменил на span:
<span onClick=\"if (window.opener){window.opener.ins_city('xxxx','Екатеринбург (2)')};self.close()\">Екатеринбург</span>


Взято отсюда


Часовой пояс GMT +3, время: 08:55.