window.open和searchpopop

时间:2010-03-16 14:22:47

标签: javascript popup

我们使用window.open打开弹出窗口。但后来我们想找到并关闭。不幸的是,我们无法将此弹出句柄保存为变量。

P.S。如何获取所有窗口的列表?

4 个答案:

答案 0 :(得分:1)

这应该有效:

var wh = window.open(..)

wh是弹出窗口的句柄。

答案 1 :(得分:0)

如果您可以控制加载脚本的页面,则可以执行以下操作。 警告:这是一件非常可怕且通常不好的事情:

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

这将构建一个对象(windowHandles),其中将保存每个打开窗口的句柄。

之前将该脚本放入页面打开另一个窗口的脚本。

答案 2 :(得分:0)

我不喜欢这个解决方案。修复脚本给你一个句柄是一个更好的选择。

<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>

答案 3 :(得分:0)

我发现不是完美的解决方案,但它有效。

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

此代码搜索搜索窗口具有此名称和返回处理程序,但如果窗口关闭则打开空弹出窗口。 我认为这是暂时的解决方案