“稍后提醒我”弹出窗口不会在导航中使用setTimeout返回

时间:2010-10-05 20:43:26

标签: javascript

那里,这是要求:

页面加载时,如果某些条件为真,则弹出一个包含详细信息的窗口,在弹出窗口中提供“5分钟内提醒我”的链接,点击链接时,弹出窗口将消失并弹出5分钟后备份。我使用setTimeout作为延迟,但只有当你停留在原始父页面时它才有效,如果你导航到另一个页面,弹出窗口将不会返回。以下是单击链接时调用的函数:

  function popBack(delay, spec) {
        var popupUrl = window.location;
        window.close();
        window.opener.setTimeout("window.open('" + popupUrl + "', 'popWindow', '" + spec + "')", delay);
    }

真的很感激任何帮助。感谢。

2 个答案:

答案 0 :(得分:2)

您是否考虑过使用Cookie或会话或数据库来存储提醒?每次加载页面时,您都可以检查提醒应该弹出的时间,并在剩余时间内开始新的超时。

可能的解决方案:

  1. 用户点击“在5分钟内提醒我”链接。
  2. 您可以在弹出提醒时创建Cookie。
  3. 在每个新页面加载时,打开cookie并获取时间。
  4. 将超时功能设置为触发(cookie时间 - 当前时间)毫秒。
  5. 将提醒标记为已触发,以防它应该关闭,但用户正忙于在页面之间导航。
  6. 您还会检查新页面加载时已触发的标志已经过了但未被触发的提醒时间并立即显示提醒弹出窗口。
  7. 24小时后或任何时候使Cookie过期。
  8. 我认为无论您选择何种解决方案,都需要将数据保存在JavaScript之外的某个位置。

答案 1 :(得分:1)

window.opener是指“源文档的窗口”。这意味着如果文档消失(通过导航到另一个URL),window.opener不再有效