有没有办法捕获用户是单击确定还是取消?
如果用户离开页面,我只需要做一些事情......
答案 0 :(得分:7)
以下是我正在使用的解决方案,我需要在用户从页面导航时执行某些操作(例如清除会话)。
我有2个全球大战
var clearSession = true;
var confirmExit = true;
window.onbeforeunload = function() { return confirmExit(); }
window.onunload = function() { return clearSession(); }
function confirmExit() {
if (needToConfirm == true) {
return "exit page?";
}
}
function clearSession() {
if (clearSession == true) {
alert("Killing the session on the server!!!");
PageMethods.ClearSession();
}
}
然后,当然,在每个页面提交/按钮/下拉列表等...您需要确保上述全局变量设置为false。
希望这有助于某人。
答案 1 :(得分:4)
不,浏览器允许您仅在警告框中指定文本,但无法捕获结果。
答案 2 :(得分:1)
您可以使用一个setTimeout来验证。
window.onbeforeunload = function() {
if (needToConfirm) {
setTimeout(function() {
alert('User still is on the page');
}, 0);
return 'Are you sure you want to leave?';
}
};
基本上,onbeforeunload函数会阻止执行,只有当用户仍在页面上时才会执行超时。 0毫秒只是将它放在执行队列的底部。
答案 3 :(得分:0)
这是一个编程技巧或者更确切地说是一种可以尝试的解决方法。 我没有找到任何" javascript提供"默认方式
我有一个网页(里面有一个表格),位于本地系统上,需要保护他们免受未经授权的用户输入任何输入。
我创建了一个JavaScript函数,可以加载主页面。
如下所示
<script src="./resources/brazil-uam-all-javascript.js"></script>
</head>
<body id="uam_gui" onload="authenticate2();">
<div id="UAM_tool">
现在的JAVASCRIPT功能
用户在使用对话框提示时输入值。如果用户没有输入任何值,只需单击确定或取消或使用ESC键或&#34;关闭&#34;按钮以避免身份验证,然后页面将以相同的提示退回。 在这里,我间接捕捉用户的回复。 希望它有助于满足您的要求。
function authenticate2() {
var prompt_for_the_magic_number = prompt("Enter Your M A G I C N U M B E R ::: ", "");
if (prompt_for_the_magic_number === true)
{
if (prompt_for_the_magic_number.length === 0)
{
alert("You are supposed to ENTER A VALUE");
location.reload();
}
else
{
if (prompt_for_the_magic_number.length > 4)
{
alert("You are supposed to ENTER ONLY 4 DIGITS");
location.reload();
}
esle
{
//some code to allow access based on a logic
}
}
}
else
{
alert("You are supposed to ENTER 4 DIGITS");
location.reload();
}
}