我似乎无法弄清楚如何纠正我遇到的 2 个问题。
这是我正在使用的代码:
function password() {
var testV = 1;
var pass1 = prompt('Please Enter The Password','');
while (testV < 2) {
if (!pass1)
history.go(-1);
if (pass1 == "default") { //password here
window.open('http://www.[redacted].com/downloads/documents/12-2011-project.psd'); //if password correct
break;
}
testV += 1;
var pass1 =
prompt('Incorrect - Please Try Again.',''); //if password incorrect
}
if (pass1 != "password" & testV == 2)
history.go(-1);
window.location = "/exit.html"; //redirects to here after success and opens download
}
我的第一个问题: 单击“取消”时,它会再次提示。我只是希望它在我单击取消后简单地消失。
第二: 当您单击“取消”时使用了 2 次尝试后,它会像下载一样重定向(没有激活下载,这很好。)
我做错了什么,或者需要修复什么?
此外,如果用户只按两次“确定”,则不会激活下载,但它仍会重定向。我在退出页面上留下了说明这一点。这不会打扰我,但是可以解决吗?如果不是,那对我来说很好。
已解决(12/16 @ 上午 9:30) 感谢所有回答我第一个问题的人!
最佳答案
问题 1 - 如果我理解正确的话,如果用户取消你想要中止所有进一步的处理,那么你可以简单地通过更改此从 password()
函数返回:
if (!pass1)
history.go(-1);
对此:
if (!pass1) {
history.go(-1);
return;
}
否则,如果你想留在你的函数中,说 break
而不是 return
(就像你已经为正确的密码所做的那样)来退出 while 循环然后在循环后为该情况添加适当的 if 结构。
问题 2 - 如果您已经从 password()
函数返回,则不会发生重定向,如上所示。如果您试图迎合用户没有取消但密码错误的情况,那么可以这样:
if (pass1 != "password" & testV == 2)
history.go(-1);
else
window.location = "/exit.html";
虽然我不确定你为什么要在那个时候测试 testV
的值。
注意:如果您的 JavaScript 中有密码,用户将能够通过查看您的 JS 源代码来查看密码。
关于Javascript 密码提示错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8535149/