迹忆客 专注技术分享

当前位置:主页 > 学无止境 > WEB前端 > JavaScript >

在 JavaScript 中创建自定义警告框

作者:迹忆客 最近更新:2023/06/02 浏览次数:

本文将介绍如何使用 jQuery UI、SweetAlert2 和自定义警报功能在 JavaScript 中创建自定义警报框。


使用 jQuery UI 创建自定义警告框

我们可以使用 jQuery UI 来模仿 JavaScript 本机 alert() 函数的功能。 尽管 jQuery UI 有很多 API,您可以使用它的 dialog() API 来创建自定义警告框。

同时,与原生 JavaScript 原生的 alert() 函数不同,您可以拖动使用 dialog() API 创建的警告框。

我们在以下代码块中将 jQuery、jQuery UI 和 jQuery UI 的 CSS 样式导入到我们的代码中。 因此,我们可以使用 dialog() API 来创建自定义警告框。

同时,dialog() API 需要网页上的一个位置来显示自定义警告框。 因此,我们将使用具有唯一 ID 的 HTML div 元素。

更重要的是,这个 div 应该有一个 title 属性,其中包含将成为自定义警告框标题的文本。 当您在 Web 浏览器中运行代码时,您会看到使用 dialog() API 创建的自定义警告框。

代码:

<head>
    <meta charset="utf-8">
    <title>Customized alert box with jQueryUI</title>
    <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
    <script>
        $(function() {
            $("#jquery-ui-dialog").dialog();
        });
    </script>
</head>
<body>
    <main style="display: flex; justify-content: center;">
        <div id="jquery-ui-dialog" title="A dialog">
            <p>You can move this dialog box, or close it with the 'X' sign at the top-right.</p>
        </div>
    </main>
</body>

输出:

Customized Alert Box With jQueryUI


使用 SweetAlert2 创建自定义警报框

SweetAlert2 允许您创建一个可访问、可自定义且响应迅速的警报框。 它旨在取代 JavaScript 弹出框,包括原生 JavaScript alert() 函数。

您可以在项目中以多种方式使用 SweetAlert2。 但是,对于本文,我们将通过内容分发网络 (CDN) 将其与 <script> 标记一起使用。

因此,当 SweetAlert2 下载时,您可以通过将事件侦听器附加到 HTML 按钮来使用它。 您可以调用 Swal.fire() 方法并在事件侦听器中为其提供参数。

您提供给 Swal.fire() 的参数决定了自定义警报框的输出。

我们在下一个代码块中将事件侦听器附加到 HTML 按钮。 此按钮的 HTML ID 属性为#showAlert。

我们使用 jQuery 来抓取 ID 来让事情变得简单。 之后,我们使用显示自定义警报的参数调用 Swal.fire() 方法。

代码:

<head>
    <meta charset="utf-8">
    <title>Customized alert box with SweetAlert2</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11.4.8/dist/sweetalert2.all.min.js"></script>
    <style type="text/css">
        button {
            padding: 1em;
            background-color: #1560bd;
            color: #ffffff;
            border-radius: 0.2em;
            border-style: none;
            cursor: pointer;
        }
    </style>
</head>
<body>
    <main>
        <button id="showAlert">Click Me</button>
    </main>
</body>
<script>
    $("#showAlert").click(function(){
        Swal.fire(
            'Are you done?',
        )
    });
</script>

输出:

Custom Alert Box With Sweetalert2


使用自定义函数创建自定义警报框

您可以创建一个自定义函数来替换用户 Web 浏览器中的本机 alert() 框。 您将从 window 对象执行此操作,自定义函数将按如下方式工作:

  1. 为警报标题和警报按钮文本设置常量。
  2. 检查 HTML 是否具有 alert_container 的 ID。 如果为真,则停止创建自定义警报。
  3. 为警报容器创建 div 元素并将其附加到 body 元素。 之后,执行以下操作:
  • 为警报容器提供一个 HTML ID。
  • 为警报容器提供一个 HTML 类名。
  1. 为警告框创建一个 div 元素并将其附加到警告容器。 然后,给它一个 HTML 类名。
  2. 使用 scrollTop 设置警告框的顶部位置。
  3. 使用 scrollWidth 和 offsetWidth 设置警告框的左侧位置。
  4. 为警报标题创建一个 HTML h1 元素。 然后执行以下操作:
  • 为警报标题创建一个文本节点。 它的值应该是警报标题常量。
  • 将 h1 附加到警告框。
  • 将文本节点附加到警报标题。
  1. 创建 HTML 按钮元素。 然后执行以下操作:
  • 为按钮文本创建一个文本节点。 它的值应该是警报标题常量。
  • 将按钮文本附加到按钮元素。
  • 将按钮元素附加到警告框。
  • 为按钮元素分配一个唯一的类名。
  • 将事件侦听器附加到按钮。 事件侦听器应关闭自定义警报框。

此外,您应该创建一个函数来删除自定义警报。 这应该在用户单击“OK”按钮时发生。

该函数应使用以下步骤:

  1. 获取 HTML 正文元素。
  2. 获取警报容器。
  3. 使用 removeChild 方法从 HTML 正文元素中删除警报容器。

最后,创建 CSS 样式来设置自定义警报功能的样式。 在后续代码块中,您将找到以下内容的实现:

  1. 自定义警报功能
  2. 删除它的功能
  3. 自定义警报功能的 CSS 样式

HTML 和 JavaScript 代码:

<body>
    <input type="button" value = "Say Hello" onclick="alert('Hello');" />
</body>
<script>
    // Ensure the user's web browser can run
    // JavaScript before creating the custom
    // alert box
    if (document.getElementById) {
        // Swap the native alert for the custom
        // alert
        window.alert = function (alert_message) {
            custom_alert(alert_message);
        }
    }

    function custom_alert(alert_message) {

        /* You can utilize the web page address
         * for the alert message by doing the following:

         const ALERT_TITLE = "The page at " + document.location.href + " says: ";
         */
        const ALERT_TITLE = "Alert Message";
        const ALERT_BUTTON_TEXT = "OK";

        // Check if there is an HTML element with
        // an ID of "alert_container".If true, abort
        // the creation of the custom alert.
        let is_alert_container_exist = document.getElementById("alert_container");
        if (is_alert_container_exist) {
            return;
        }

        // Create a div to serve as the alert
        // container. Afterward, attach it to the body
        // element.
        let get_body_element = document.querySelector("body");
        let div_for_alert_container = document.createElement("div");
        let alert_container = get_body_element.appendChild(div_for_alert_container);

        // Add an HTML ID and a class name for the
        // alert container
        alert_container.id = "alert_container";
        alert_container.className = "alert_container"

        // Create the div for the alert_box and attach
        // it to the alert container.
        let div_for_alert_box = document.createElement("div")
        let alert_box = alert_container.appendChild(div_for_alert_box);
        alert_box.className = "alert_box";

        // Set the position of the alert box using
        // scrollTop, scrollWidth, and offsetWidth
        alert_box.style.top = document.documentElement.scrollTop + "px";
        alert_box.style.left = (document.documentElement.scrollWidth - alert_box.offsetWidth) / 2 + "px";

        // Create h1 to hold the alert title
        let alert_header_tag = document.createElement("h1");
        let alert_title_text = document.createTextNode(ALERT_TITLE)
        let alert_title= alert_box.appendChild(alert_header_tag);
        alert_title.appendChild(alert_title_text);

        // Create a paragraph element to hold the
        // alert message
        let alert_paragraph_tag = document.createElement("p");
        let alert_message_container = alert_box.appendChild(alert_paragraph_tag);
        alert_message_container.textContent = alert_message;

        // Create the OK button
        let ok_button_tag = document.createElement("button");
        let ok_button_text = document.createTextNode(ALERT_BUTTON_TEXT)
        let ok_button = alert_box.appendChild(ok_button_tag);
        ok_button.className = "close_btn";
        ok_button.appendChild(ok_button_text);

        // Add an event listener that'll close the
        // custom alert
        ok_button.addEventListener("click", function () {
            remove_custom_alert();
        }, false);
    }

    function remove_custom_alert() {
        let HTML_body = document.querySelector("body");
        let alert_container = document.getElementById("alert_container");
        HTML_body.removeChild(alert_container);
    }
</script>

CSS 代码:

.alert_container {
    position: absolute;
    top: 0px;
    left: 0px;
    width: 100%;
    height: 100%;
    background-color: #0000004d;
}

.alert_box {
    position: relative;
    width: 300px;
    min-height: 100px;
    margin-top: 50px;
    border: 1px solid #666;
    background-color: #fff;
}

.alert_box h1 {
    font-size: 0.9em;
    margin: 0;
    background-color: #1560bd;
    color: #fff;
    border-bottom: 1px solid #000;
    padding: 2px 0 2px 5px;
}

.alert_box p {
    font-size: 0.7em;
    height: 50px;
    margin-left: 55px;
    padding-left: 5px;
}

.close_btn {
    width: 70px;
    font-size: 0.7em;
    display: block;
    margin: 5px auto;
    padding: 7px;
    border: 0;
    color: #fff;
    background-color: #1560bd;
    border-radius: 3px;
    cursor: pointer;
}

输出:

Custom Alert Box With a Custom Function

上一篇:JavaScript 剪贴板数据

下一篇:没有了

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

JavaScript 剪贴板数据

发布时间:2023/06/03 浏览次数:105 分类:JavaScript

本篇文章将介绍在 JavaScript 中检测粘贴事件上的剪贴板数据。JavaScript 剪贴板数据。当用户通过浏览器 UI 启动粘贴操作时,将引发粘贴事件。

在 JavaScript 中添加 Vector 类

发布时间:2023/06/03 浏览次数:180 分类:JavaScript

本文将教您如何使用 for 循环、ES6 Map、ES6 类和扩展原生 Array 类在 JavaScript 中添加向量。您可以使用 for 循环在 JavaScript 中添加两个向量。 同时,向量应该是 JavaScript 数组。

JavaScript 中的行继续符

发布时间:2023/06/03 浏览次数:60 分类:JavaScript

这个简短的 JavaScript 文章涵盖了 JavaScript 中的词法语法。 此外,还将使用各种新的换行技术深入介绍字符串,以及在处理这些字符串时如何处理换行符。JavaScript 中的词法语法

使用 JavaScript 在没有插件的情况下输入文本掩码

发布时间:2023/06/03 浏览次数:196 分类:JavaScript

JavaScript 输入掩码或掩码文本框是一种控件,它为用户提供了一种简单可靠的方式来收集基于标准掩码的输入。 在本文中,我们将探索使用 JavaScript 在没有插件的情况下进行输入文本屏蔽。

在 JavaScript 中获取域名

发布时间:2023/06/03 浏览次数:122 分类:JavaScript

在本文中,我们将学习如何使用 JavaScript 事件和函数在网页执行期间以编程方式获取域名。我们使用域名从客户端应用程序访问网站或网页。

在 JavaScript 中清除 canvas 画布

发布时间:2023/06/03 浏览次数:166 分类:JavaScript

本文介绍如何在 JavaScript 中清除画布。在 JavaScript 中清除画布 canvas 元素帮助我们借助 JavaScript 绘制图形。 画布只是图形的容器,它需要JavaScript来绘制图形。

在 Angular 中上传文件

发布时间:2023/04/14 浏览次数:71 分类:Angular

本教程演示了如何在 Angular 中上传任何文件。我们还将介绍如何在文件上传时显示进度条,并在上传完成时显示文件上传完成消息。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便