如何在警示页面点击“OK”后重新加载页面

27

在警告框上点击“确认”按钮后,我需要重新加载页面。 我正在使用以下代码来实现:

alert("Successful Message");
window.location.reload();

但是在显示警告框后,窗口立即重新加载。请帮我解决这个问题。


1
使用 prompt 而不是 alert - Ohgodwhy
也许这个链接可以帮到你:https://dev59.com/Rmw05IYBdhLWcg3wmC6_ - JGrinon
在表单提交响应返回后,您是否重新加载此窗口? - itzmukeshy7
你所拥有的应该可以工作。alert是阻塞的。我敢打赌你的浏览器正在阻止弹出窗口,因此它立即转到下一行。建议使用if来进行警报并不必要。 - craigmichaelmartin
10个回答

67

确认给您一个点击取消的机会,而不会重新加载!

相反,您可以使用类似以下的内容:

if(alert('Alert For your User!')){}
else    window.location.reload(); 

这将向您的用户显示警报,当他点击“确定”后,它将返回false并重新加载! :) 另外,还有一个简短版本:

if(!alert('Alert For your User!')){window.location.reload();}

我希望这有所帮助!?:)


5
FYI. "if(!alert('Alert For your User!')){window.location.reload();}"这段代码有效,应该标记为答案。 - finnTheHumin

14

使用JavaScript的confirm()方法代替alert。如果用户点击了ok按钮,则它返回true,而如果用户点击了取消按钮,则返回false。示例代码如下:

if(confirm('Successful Message')){
    window.location.reload();  
}

1
我不想要一个取消按钮。在点击确定后,页面需要刷新...确认也会提供取消按钮。 - Nabeel Arshad

8
请使用确认框。
var r = confirm("Successful Message!");
if (r == true){
    window.location.reload();
}

7
alert('Alert For your User!') ? "" : location.reload();

您可以按照以下格式编写上述代码。这种方式看起来相当不错。

为什么在这里添加了 ? "" : - itzmukeshy7
@itzmukeshy7 三元运算符。与if else的用法相同,只需一行代码。ES6实现。 - yashas123
@yashas123 但是如果我们在alert()中使用三元运算符,那么它将始终触发else部分,因为alert()始终返回false,不是吗? - itzmukeshy7
@itzmukeshy7 最好使用window.onbeforeunload = function() { 你想要做的任何事情 } - yashas123

2

Bojan Milic的回答可以解决问题,但会出现下面的错误信息:

enter image description here

可以通过以下方法避免这个问题:

function message() 
{
alert("Successful message");
window.location = 'url_Of_Redirected_Page' // i.e. window.location='default.aspx'
}

这将解决问题:window.location.href = window.location.href; - bets

0

尝试这段代码...

PHP 代码中

echo "<script type='text/javascript'>".
      "alert('Success to add the task to a project.');
       location.reload;".
     "</script>";

在JavaScript中

function refresh()
{
    alert("click ok to refresh  page");
    location.reload();
}

1
location.reload 是一个方法而不是属性,请查看您的 PHP 代码。 - itzmukeshy7
好的,但是这段代码在我的项目中运行良好。这样你就可以解决你的主要问题了。顺便感谢你的时间。 - SirajShaikh

0
有趣的是,Firefox在重定向函数之后将停止进一步处理JavaScript。Chrome和IE将继续显示任何其他警报,然后重新加载页面。试试看:
<script type="text/javascript">
    alert('foo');
    window.location.reload(true);
    alert('bar');
    window.location.reload(true);
    alert('foobar');
    window.location.reload(true);
</script>

0
由于JavaScript中的警报方法不返回布尔值或产生当前线程,因此您必须使用其他方法。
我最推荐的方法需要一些CSS经验。您应该创建一个固定位置的div元素。
否则,您可以使用confirm()方法。
confirm("Successful Message");
window.location.reload();

然而,这将添加一个取消按钮。由于确认方法不在if语句内,因此取消按钮仍会像您想要的那样刷新页面。

0

我可能说错了,但我遇到了同样的问题。在花费比我想象中更多的时间后,我意识到我已经设置 Chrome 阻止所有弹出窗口,因此一直重新加载而没有显示警告框。所以关闭你的窗口,再次打开页面。

如果这不起作用,那么你的问题可能是更深层次的,因为已经给出的所有解决方案都应该有效。


0

试试这个:

alert("Successful Message");
location.reload();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接