Opener.Location.Reload (); отображается ошибка «Отказано в доступе» в сценарии Java - PullRequest
4 голосов
/ 04 декабря 2008

У меня было два домена, например. domain1 и domain2, я открываю страницу domain2 / index.aspx как всплывающее окно со страницы domain1 / default.aspx. При закрытии страницы domain2 мне нужно перезагрузить страницу domain1, я дал код javascript как "Opener.Location.Reload ();". Я получаю Отказано в разрешении Ошибка JavaScript. Любые идеи по этому вопросу.

Ответы [ 3 ]

6 голосов
/ 06 апреля 2010

Я обнаружил, что установка переменной parentUrl во всплывающем окне (получена из строки запроса) а затем с помощью:

window.opener.location.href = parentUrl;

работает.

Я не знаю почему, я думаю, что это волшебство, но оно работает (проверено на IE, chrome и Firefox). Вы не можете прочитать значение window.opener.location.href, но вы можете установить его на любой URL, который вы хотите. Я использую эту странность, чтобы сделать обновление.

Надеюсь, это поможет

2 голосов
/ 31 августа 2009

Это можно сделать, поместив код в родительское окно, чтобы определить, когда дочернее окно закрылось.

var win2;

function openWindow()
{
  win2 = window.open('http://...','childwindow',...);
  checkChild();    
}

function checkChild() {
  if (win2.closed) {
    window.location.reload(true);
  } else setTimeout("checkChild()",1);
}
2 голосов
/ 04 декабря 2008

Некоторые свойства и действия специально блокируются в междоменных сценариях. То, что вы могли бы сделать, - это создать функцию для родителя, которая выполняет код, который вы хотите, а затем вызвать эту функцию из дочернего элемента.

Пример:

// On the parent...
function DoTheRefresh()
{
    location.reload();
}

Тогда на ребенка:

opener.DoTheRefresh();

Я делал это в прошлом, поэтому я не знаю наверняка, если это все еще вариант. Я надеюсь, что это сработает для вас :)

...