window.open и searchpopop - PullRequest
       8

window.open и searchpopop

1 голос
/ 16 марта 2010

Мы используем window.open для открытия всплывающего окна. Но тогда мы хотим найти его и закрыть. К сожалению, мы не можем сохранить этот дескриптор всплывающего окна в переменной.

P.S. Как получить список всех окон?

Ответы [ 4 ]

1 голос
/ 16 марта 2010

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

var wh = window.open(..)

wh - дескриптор всплывающего окна.

0 голосов
/ 16 марта 2010

Я нашел не идеальное решение, но оно работает.

win = window.open(null, 'Window1');

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

0 голосов
/ 16 марта 2010

Мне не нравится это решение. Лучше было бы исправить сценарий, чтобы дать вам ручку.

<button onclick="go()">Go</button>
<button onclick="stop()">Stop</button>

<script type="text/javascript">

    function go() {
            // Existing function. It opens a window with a name.
            window.open('http://google.com', 'test', 'width=300,height=300');
    }

    var foo;

    function stop() {
            // Open a new window with the same name. It replaces the existing window.
            // Since it opens a local document, the Same Origin Policy does not apply.
            // ... and we can capture its return value to grab a handle on an existing 
            // window
            foo = window.open('black-local-page.html', 'test',  'width=300,height=300');
            // Give the local page time to load
            setTimeout(continue_stopping, 500);
    }

    function continue_stopping() {
            // Call window.open() on the window
            foo.close();
    }

</script>
0 голосов
/ 16 марта 2010

Если у вас есть контроль над страницей, которая загружает скрипт, вы можете сделать что-то вроде этого. Предупреждение: это действительно страшная и вообще плохая вещь:

<script>
  var windowHandles = {};
  (function() {
    var realOpen = window.open;
    window.open = function(url, name, features) {
      windowHandles[name] = realOpen(url, name, features);
    };
  })();
</script>

Это создаст объект (windowHandles), в котором будут сохранены маркеры для каждого открытого окна.

Поместите этот скрипт на вашу страницу до того, как загрузится скрипт, который открывает другое окно.

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