【问题标题】:history back() method close new opened tabshistory back() 方法关闭新打开的标签
【发布时间】:2020-01-27 19:42:44
【问题描述】:

我的问题与这篇文章有关:Javascript : History back() Method

我想在我的网站上实现一个“返回”按钮。但是让我们想象一下页面是在一个新选项卡中打开的。

如果浏览器历史记录为空,有没有办法关闭窗口?

我在连接 history.back() 和 window.close() 函数时有些吃力,但这就是我要做的全部,不是吗?

感谢您的帮助!

【问题讨论】:

  • 每个选项卡(或窗口)都有自己的历史记录对象,在您第一次打开选项卡时它是空的。
  • 查看我对@Titulum 答案的评论。如果您没有使用window.open() 打开窗口,您将无法使用window.close() 关闭它
  • 我建议您创建自己的历史记录对象,因此每当您打开任何选项卡/窗口时,将其添加到您的对象中,当用户按下返回或下一步时,然后关闭/打开窗口。
  • 上述建议只有在用户使用您网站的按钮导航时才有效,否则浏览器的后退/下一个窗口将与@Teemu 所说的不同

标签: javascript html


【解决方案1】:

According to this StackOverflow post,无法确定是否还有浏览器历史记录条目。因此,@Titulum 的解决方案应该可以工作,但可能会失败,具体取决于 History API 的浏览器实现。

【讨论】:

    【解决方案2】:

    你可以使用这样的方法:

    function closeWindowIfHistoryIsEmpty() {
      if (window.history.length === 0) {
        window.close();
      } else {
        window.history.back();
      }
    }
    

    【讨论】:

    • 技术上这会起作用,但 OP 需要记住 window.close() 只会关闭由 window.open() 打开的窗口:developer.mozilla.org/en-US/docs/Web/API/Window/close
    • 好的,如你所说。该代码在技术上是有效的,但是由于我没有使用 window.open() 函数,所以它没有按预期工作......
    猜你喜欢
    • 2022-09-28
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-27
    • 1970-01-01
    • 2010-11-26
    相关资源
    最近更新 更多