我对此进行了一些尝试,似乎问题是前面的答案所暗示的——如果你已经打开了一个窗口,那么对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>
这可能不是很有启发性,但希望它能让你走上一条更有前途的道路。