代码之家  ›  专栏  ›  技术社区  ›  Paulo

Javascript窗口。使用Prototype在窗口已存在时打开观察

  •  1
  • Paulo  · 技术社区  · 17 年前

    剧情简介

    问题


    // This code is run whenever there is no reference to the window
    this.preview_window = window.open('/folder/page.php','page_previewer');
    Event.observe(this.preview_window, 'load',this.update.bindAsEventListener(this));
    

    2 回复  |  直到 14 年前
        1
  •  1
  •   Tracker1    17 年前

    我对此进行了一些尝试,似乎问题是前面的答案所暗示的——如果你已经打开了一个窗口,那么对window.open()的调用将不会触发加载事件。因此,每次调用按钮的事件处理程序时,您基本上都需要刷新预览窗口,以确保加载事件将被触发,因此您的更新处理程序也可以被调用。这是我用来演示的代码:

    var preview_window;
    
    function openPreviewWindow() {
        if (preview_window) {
            preview_window.close(); //Load will not fire unless we close the window first
        }
        preview_window = window.open('/', 'preview_window');
        Event.observe(preview_window, 'load', function () {
            alert('Updating opened window.');
        }.bindAsEventListener(this));
    }
    
    <a href="#" onclick="openPreviewWindow()">Open Preview Window</a>
    

    这可能不是很有启发性,但希望它能让你走上一条更有前途的道路。

        2
  •  1
  •   Lyudmil    17 年前

    if (this.preview_window && !this.preview_window.closed)
      this.preview_window.close();
    ... open window ...