javascript - 如何使用 history.goBack 关闭弹出窗口以及如何在通过直接链接打开后关闭弹出窗口
问题描述
我正在使用 react-router 在新的 URL 地址中打开弹出窗口。它看起来像这样:
<Route path="/some-url/popup" children={({ match }) => (
<Dialog onClose={history.goBack} open={Boolean(match)}>
<PopupContent />
</Dialog>
)} />
如您所见,我想通过 history.goBack 清除打开和关闭弹出窗口的浏览器历史记录。但是有一种情况是,用户通过指向此弹出窗口的直接链接打开网站,然后用户无法关闭弹出窗口以继续使用该网站,因为之前的路线不是来自我们的网站。结果,用户在按下关闭弹出按钮后会从我们的网站重定向到上一个路线,但我们希望用户留在我们的网站上。
我为您创建了一个小演示,以便更好地理解https://sin9k.com/popups-routes/posts
您可以打开此网站,例如单击“注册”按钮,然后关闭弹出窗口,您将看到您仍在该网站上。但是,如果您复制弹出窗口的链接并将其粘贴到浏览器的新选项卡中,您将在关闭弹出窗口后将网站返回到空选项卡。
有谁知道这种情况的解决方法?
更新
经过一些研究,我用演示和 GitHub 为这个问题创建了一些视频答案。
CN: https://youtu.be/tl5_k6YBRKg
茹:https ://youtu.be/fqYk-b1lhyI
解决方案
推荐阅读
- mysql - SQL 查询在所有列中查找重复次数最多的 2 值
- c++ - 从内存中安全地删除字符串内容
- java - Android Notification Click to Broadcast Receiver 获得相同的意图字符串
- python - 简单的http服务器转换为exe后不起作用
- python - 通过 Ubuntu 终端选项卡自动循环切换器
- elixir - `:zlib.gunzip` 和 `:zlib.inflate/2` 工作正常,但我在尝试使用 `:zlib.safeInflate/2` 制作流时得到 `:data_error`
- php - 我在 Stripe 集成中发现了致命错误
- javascript - javascript style.textDecoration 包含意外的 rgb 值?
- mysql - MySQL使用循环更新列中的数据
- java - 在 Java 中生成常量数组的最简单方法