Это сводит меня с ума!
Сценарий:
Главная страница открывает всплывающее окно, а затем вызывает в нем функцию:
newWin = window.open(someurl,'newWin',options);
... немного кода позже ...
newWin.remoteFunction(options);
и все в порядке.
Теперь всплывающее окно все еще открыто, и главная страница меняется на страницу 2. На странице 2 newWin больше не существует, и мне нужно заново создать ссылку на объект всплывающего окна, чтобы снова вызвать удаленную функцию. (newWin.remoteFunction)
Я пробовал что-то вроде:
newWin = open('','newWin', options);
if (!newWin || newWin.closed || !newWin.remoteFunction) {
newWin = window.open(someurl,'newWin',options);
}
И это работает, я могу снова вызвать newWin.remoteFunction, НО Safari по какой-то причине отдает Focus () всплывающему окну каждый раз, когда метод open () называется нарушением навигации (мне абсолютно необходимо, чтобы всплывающее окно работало в фоновом режиме).
Единственный обходной путь, который я могу решить, это создать интервал во всплывающем окне с помощью:
if(window.opener && !window.opener.newWin) window.opener.newWin = self;
, а затем установите еще один интервал на открывающей странице с помощью некоторого try / catch, но это не элегантно и очень неэффективно.
так, мне интересно, неужели так сложно получить ссылку на всплывающий объект между разными страницами в окне открывания?