Window.Opener и обращение по идентификатору из-за контроля .NET - PullRequest
0 голосов
/ 25 мая 2009

У меня есть страница .aspx, на которой есть ссылка, затем при нажатии открывается новое окно с помощью window.open.

Мне нужно отправить целое число обратно и поместить это число в текстовое поле (которое является элементом управления .NET).

Когда я вызываю window.opener во всплывающем окне, я должен ссылаться на идентификатор текстового поля. Проблема в том, что время от времени идентификатор изменяется, если вы добавляете что-то в дерево элементов управления.

Как я могу надежно ссылаться на идентификатор текстового поля из нового окна?

У меня также установлен jQuery, но я не уверен, смогу ли я использовать jQuery из нового окна?

Ответы [ 2 ]

2 голосов
/ 25 мая 2009

Вместо доступа к элементу непосредственно из всплывающего окна, поместите на страницу функцию, которую всплывающее окно может вызвать. В функции вы можете вставить фактический идентификатор элемента:

function setTextbox(value) {
   document.getElementById('<%=TheTextBox.ClientID%>').value = value;
}

Во всплывающем окне:

window.opener.setTextbox("Hello world!");
1 голос
/ 25 мая 2009

Это должно работать

// original window script
var windowHandle = window.open(...);
windowHandle.top.otherWindowTextBox = document.getElementById('idOfTextBox); // or use jQuery

Теперь во всплывающем окне у вас есть ссылка на текстовое поле на странице, которая открыла всплывающее окно.

// script in popup window.
top.otherWindowTextBox.value = someInteger;
...