如何防止 javascript 警报更改活动窗口

How to prevent the javascript Alert to change the active window

本文关键字:活动 窗口 何防止 javascript      更新时间:2023-09-26

我在 asp.net 页面中使用java脚本文件进行计算。如果用户在某些文本框中写入了错误的值,我会使用简单的 ALert 向他们显示一条消息:

 if (parseFloat(ctrltotal.value) < totalEX) {
            alert(" Error message ");
            return false;
        }
我的

问题是,当出现警报消息时,活动窗口从当前活动窗口(我的浏览器)切换到另一个窗口(系统上任何其他打开的窗口)。 有什么理由可以防止这种情况吗?

谢谢。

您可以在单击按钮之前保存活动元素,并在警告框消失后重新聚焦该元素。

例:

<div>
    <div> Input A: <input type="text" /> </div>
    <div> Input B: <input type="text" /> </div>
    <div> Input C: <input type="text" /> </div>
    <div> Input D: <input type="text" /> </div>
    <div> Input E: <input type="text" /> </div>
    <div> Input F: <input type="text" /> </div>
</div>
<button type="button" id="btn">Click</button>

您可以使用按钮on mouse down事件并获取活动文档元素(单击事件为时已晚,因为单击按钮会"窃取"活动元素)并在警告框后重新聚焦它。

var focused = null;
document.getElementById('btn').onmousedown = function(){
    focused = document.activeElement;
}
document.getElementById('btn').onclick = function(){
    alert('Hello');
    if (focused != null) focused.focus();
}

JSFIDDLE:

http://jsfiddle.net/8bvyf16q/