javascript - 单击浏览器后退按钮时隐藏模态窗口(模态框)

标签 javascript php html jquery

当用户打开站点时,他可以单击登录按钮,然后以模式查看登录表单。但是当用户点击后退浏览器按钮时,他会返回上一页。如果前一页是开始浏览器页面,他返回开始浏览器页面。
当用户点击浏览器后退按钮时,是否可以只隐藏模式而没有任何额外的警报?
当用户触摸手机上的返回按钮时,也可以隐藏此模式?(我只是在谈论手机底部的 Android 手机上存在的按钮,它将用户返回到上一个窗口/屏幕)
现场使用的 PHP 和 JS 代码。
非常感谢任何帮助

最佳答案

您想要的可能选项很多,但我将尝试为您提供一个相对简单的 JS 代码示例。对于这个例子,我使用了 Bootstrap Modal。
此代码的工作原理:
当您按下浏览器上的后退按钮时,该函数会搜索打开的模式窗口。
当模态元素打开时,有类 modal fade show .如果代码中存在具有这些类的元素,则执行下一步。
在下一步中,该函数查找“关闭”按钮并单击它。 “关闭”按钮具有类 btn btn-secondary此代码适用于台式机和移动设备。关闭模式窗口后,返回按钮返回正常操作。
我希望我有帮助
示例代码:


<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"
        integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">

    <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"
        integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN"
        crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"
        integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q"
        crossorigin="anonymous"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"
        integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl"
        crossorigin="anonymous"></script>
</head>
<body>




    <!-- Button trigger modal -->
    <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal">
        Launch demo modal
    </button>

    <!-- Modal -->
    <div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel"
        aria-hidden="true">
        <div class="modal-dialog" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                        <span aria-hidden="true">&times;</span>
                    </button>
                </div>
                <div class="modal-body">
                    ...
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
                    <button type="button" class="btn btn-primary">Save changes</button>
                </div>
            </div>
        </div>
    </div>




    <script>

        function back_Button() {

            history.pushState(null, null);
            window.addEventListener('popstate', () => {

                // Add here the classes of the MODAL as they look when it is open
                var x = document.getElementsByClassName('modal fade show')[0];
                if (x) {                 
                    // Add here the classes of target Close Button
                    var z = x.getElementsByClassName('btn btn-secondary')[0];
                    z.click();               
                    history.pushState(null, null);
                } else {
                    window.history.back();
                }
                
            });

        }

        back_Button();

    </script>

</body>
</html>

关于javascript - 单击浏览器后退按钮时隐藏模态窗口(模态框),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64832109/

相关文章:

javascript - 将特定文本与 Angular 列表中的文本字段交换

php - 雅虎财经数据查询计数和效率

php - 使用 PHP 打印到共享 Windows 打印机(Linux PHP 服务器)

javascript - 如何使用 javascript 将文本添加到 url 末尾?

html - 如何阻止这两个 div/navbars 在 Bootstrap 中重叠

javascript - 为什么这个 AJAX 回调没有被调用?

javascript - 选择 JavaScript 下拉选项会导致 D3 树形图发生更改

javascript - 单击表单中的链接,将文本区域传递给 php 文件进行处理后更新文本区域

javascript - CSS 和 Javascript 在 Tomcat 8 或 9 上加载时间过长

php - 我如何在 php 中将 STARTTLS 与 swiftmailer 一起使用?