JavaScript 自定义 alert 弹窗实现
作者:木棉时间:2026-10-22 05:43:42浏览:168
本文介绍如何通过 JavaScript 动态创建 DOM 元素来覆盖原生 window.alert 方法。通过构建包含提示内容和确定按钮的容器,并应用固定定位与样式,实现可定制的弹窗效果。代码展示了元素创建、样式赋值及事件绑定的完整流程。
自定义 alert 实现代码
以下直接展示实现自定义 alert 功能的核心代码。
<script>
window.alert = alert;
function alert(data) {
var MainDiv = document.createElement("div"),
p = document.createElement("p"),
AllPage = document.createElement("div"),
btn = document.createElement("div"),
textNode = document.createTextNode(data ? data : ""),
btnText = document.createTextNode("确定");
// 控制样式
css(AllPage, {
"position": "fixed",
" _position": "absolute",
" width": "100%",
"height": "100%",
"left": "0",
"top": "0",
"background": "rgba(0, 0, 0,0.5)",
"-moz-opacity": "0.5",
"filter": "alpha(opacity=50)",
"z-index": "97",
});
css(MainDiv, {
"position": "fixed",
"left": "0",
"right": "0",
"top": "30%",
"width": "14rem",
"height": "5rem",
"padding-top":"0.5rem",
"margin": "0 auto",
"background-color": "white",
"font-size": "0.75rem",
"text-align": "center",
"position": "relative",
"border-radius": "5px 5px 5px 5px",
});
css(btn, {
"background": "#de241b",
"color": "white",
"width": "6rem",
"margin-left": "4rem",
"margin-bottom":"0.25rem",
"height": "1.5rem",
"border-radius": "5px 5px 5px 5px",
"position": "absolute",
"padding-top":"0.5rem",
"bottom":"0",
})
// 内部结构套入
p.appendChild(textNode);
btn.appendChild(btnText);
MainDiv.appendChild(p);
MainDiv.appendChild(btn);
AllPage.appendChild(MainDiv);
// 整体显示到页面内
document.getElementsByTagName("body")[0].appendChild(AllPage);
//禁止滚动
$("body").on("touchmove", function (event) {
event.preventDefault;
}, false)
// 确定绑定点击事件删除标签
btn.onclick = function () {
AllPage.parentNode.removeChild(AllPage);
//启用滚动
$("body").off("touchmove");
}
}
function css(targetObj, cssObj) {
var str = targetObj.getAttribute("style") ? targetObj.getAttribute("style") : "";
for (var i in cssObj) {
str += i + ":" + cssObj[i] + ";";
}
targetObj.style.cssText = str;
}
上述代码展示了利用 JavaScript 实现自定义 alert 弹窗的具体方法。若在使用过程中遇到任何问题,欢迎留言咨询,作者将尽快回复。感谢对本站的支持。
作者最新文章
JS中将数组和对象混合组装为JSON字符串
2026-11-05 16:41:42
JS运算符优先级与结合性的区别是什么?
2026-11-05 13:22:02
JS Map怎么只遍历Key或Value
2026-11-05 13:00:36
D3.js 与 ECharts 选型对比:灵活性 vs 开发效率
2026-11-05 09:45:01
为什么JS中typeof []返回object:数组类型检测误区解析
2026-11-04 19:50:47
