javascript - 如果父窗口重定向到其他页面,如何检查子窗口是否存在

标签 javascript jquery ruby-on-rails

单击按钮后,将打开一个子窗口:

<button id="btn" onclick="myWindow = window.open('http://www.example.com/index', '', 'toolbars=0,resizable,scrollbars')">Start</button>

单击按钮时父窗口将重定向到另一个页面。

$('#btn').click(function(){
    parent.location.href = 'http://www.example.com/popup';
});

如果我没有重定向父窗口,我可以从父窗口检查子窗口是否存在,如下所示:

if(!myWindow.closed){
    alert('Yup, still there.');}

由于父窗口正在重定向,我无法检查 myWindow 是否关闭。

这怎么可能?

最佳答案

通过 javascript 不可能以简单的方式实现这一点。这是因为安全性。想象一下,如果一个网站可以访问您打开的所有选项卡,那将是多么困惑。因此 Javascript 仅限于它所交付的页面的 DOM。

所以你能做的就是使用 websockets。有一个名为 websocket-rails 的 websocket Rails 实现。这允许您与客户异步通信。这样您就可以实现一种方法来验证客户端是否打开了 vertan 页面。

Websocket 一开始并不那么容易理解,但它们绝对值得一读!

关于javascript - 如果父窗口重定向到其他页面,如何检查子窗口是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30116942/

相关文章:

ruby-on-rails - Rails 3. 如何在编辑表单中显示两位小数?

ruby-on-rails - 使用范围验证值的唯一性-Ruby on Rails 5

javascript - 如何自动关闭在单击并失去焦点或切换选项卡后可见的 Bootstrap 工具提示?

javascript - 文本在滚动时缓和

ruby-on-rails - 使用 Squeel gem 查找多个时间段

javascript - 菜单栏滚动在 IE 中不起作用

javascript - 在 Angular js 中打印 JSON,我可以在控制台中看到,但无法打印相同的内容

javascript - 如何在 Google Maps Javascript API v3 中旋转标记图标图像

javascript - 选择的下拉列表 : make search_contains true for all dropdown at once

asp.net - 如何在 json 结果上使用 jquery 选择器