Как вызвать функцию JavaScript родительского окна, когда дочерний элемент закрыт? - PullRequest
4 голосов
/ 05 мая 2010

Я создаю всплывающее окно. После того, как я закончу работу над дочерним (всплывающим) окном и нажму кнопку «Закрыть», мне нужно вызвать функцию javascript родительского окна. Как я могу этого добиться. Я не создаю дочернее окно самостоятельно, но отображаю содержимое некоторого другого URL.

Ответы [ 3 ]

9 голосов
/ 05 мая 2010

Я не думаю, что вы можете получить событие, потому что вы не можете связываться с самим документом, если URL-адрес находится в другом домене. Однако вы можете опросить и проверить свойство closed объекта окна:

var w = window.open("http://what.ever.com", "OtherWindow");
setTimeout(function() {
  if (w.closed) {
    // code that you want to run when window closes
  }
  else
    setTimeout(arguments.callee, 100);
}, 100);

Вы также можете запустить интервальный таймер, если предпочитаете:

var w = window.open("http://what.ever.com", "OtherWindow");
var interval = setInterval(function() {
  if (w.closed) {
    // do stuff
    cancelInterval(interval);
  }
}, 100);
0 голосов
/ 05 мая 2010

Не голосуйте за это. Это всего лишь улучшение кода Pointy для избавления от arguments.callee. Проголосуйте за Pointy.

var w = window.open("http://what.ever.com", "OtherWindow");
setTimeout(function timeout() {
  if (w.closed) {
    // code that you want to run when window closes
  }
  else
    setTimeout(timeout, 100);
}, 100);
0 голосов
/ 05 мая 2010

Если дочернее окно не создается из того же доменного имени, что и родительское окно, вы заблокированы из-за той же политики происхождения . Это сделано специально для предотвращения атак между сайтами (XSS).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...