我试图在JavaScript中发出警告,警告用户他们可能不应该重新加载页面。但我希望他们能够在没有提示的情况下导航到其他页面,而不是刷新当前页面。我发现了一些警报,但它们要么在两种情况下都提供警报,要么提供警报并刷新页面。我希望用户被警告,然后能够停止刷新页面。我想这意味着他们在离开之后也不应该回到页面。JavaScript/HTML页面刷新通知
-1
A
回答
0
<body onunload="window.alert('Hello!');">
0
您可以使用onbeforeunload
,并设置一个变量,如下所示:
var l=false;
window.onbeforeunload = function() {
if (!l) {
return "you shouldn't leave";
}
}
<a href="//google.com" onclick="l=true">Leave</a>
(这不会对运行片段工作,因为它是在iframe)
+0
这是我尝试使用的,它很好,但我希望用户能够进入不同的页面。 – fryingpantheist
-1
这你可能会觉得有用。结合上面的代码;;;
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<style>
#dialogoverlay{
display: none;
opacity: .8;
position: fixed;
top: 0px;
left: 0px;
background: #FFF;
width: 100%;
z-index: 10;
}
#dialogbox{
display: none;
position: fixed;
background: #000;
border-radius:7px;
width:550px;
z-index: 10;
}
#dialogbox > div{ background:#FFF; margin:8px; }
#dialogbox > div > #dialogboxhead{ background: #666; font-size:19px; padding:10px; color:#CCC; }
#dialogbox > div > #dialogboxbody{ background: #333; padding:20px; color:#FFF; }
#dialogbox > div > #dialogboxfoot{ background: #666; padding:10px; text-align:right; }
</style>
<script>
function CustomAlert(){
this.render = function(dialog){
var winW = window.innerWidth;
var winH = window.innerHeight;
var dialogoverlay = document.getElementById('dialogoverlay');
var dialogbox = document.getElementById('dialogbox');
dialogoverlay.style.display = "block";
dialogoverlay.style.height = winH+"px";
dialogbox.style.left = (winW/2) - (550 * .5)+"px";
dialogbox.style.top = "100px";
dialogbox.style.display = "block";
document.getElementById('dialogboxhead').innerHTML = "Acknowledge This Message";
document.getElementById('dialogboxbody').innerHTML = dialog;
document.getElementById('dialogboxfoot').innerHTML = '<button onclick="Alert.ok()">OK</button>';
}
this.ok = function(){
document.getElementById('dialogbox').style.display = "none";
document.getElementById('dialogoverlay').style.display = "none";
}
}
var Alert = new CustomAlert();
function deletePost(id){
var db_id = id.replace("post_", "");
// Run Ajax request here to delete post from database
document.body.removeChild(document.getElementById(id));
}
function CustomConfirm(){
this.render = function(dialog,op,id){
var winW = window.innerWidth;
var winH = window.innerHeight;
var dialogoverlay = document.getElementById('dialogoverlay');
var dialogbox = document.getElementById('dialogbox');
dialogoverlay.style.display = "block";
dialogoverlay.style.height = winH+"px";
dialogbox.style.left = (winW/2) - (550 * .5)+"px";
dialogbox.style.top = "100px";
dialogbox.style.display = "block";
document.getElementById('dialogboxhead').innerHTML = "Confirm that action";
document.getElementById('dialogboxbody').innerHTML = dialog;
document.getElementById('dialogboxfoot').innerHTML = '<button onclick="Confirm.yes(\''+op+'\',\''+id+'\')">Yes</button> <button onclick="Confirm.no()">No</button>';
}
this.no = function(){
document.getElementById('dialogbox').style.display = "none";
document.getElementById('dialogoverlay').style.display = "none";
}
this.yes = function(op,id){
if(op == "delete_post"){
deletePost(id);
}
document.getElementById('dialogbox').style.display = "none";
document.getElementById('dialogoverlay').style.display = "none";
}
}
var Confirm = new CustomConfirm();
</script>
</head>
<body>
<div id="dialogoverlay"></div>
<div id="dialogbox">
<div>
<div id="dialogboxhead"></div>
<div id="dialogboxbody"></div>
<div id="dialogboxfoot"></div>
</div>
</div>
<p id="post_1">
Today is a lovely day ...
<button onclick="Confirm.render('Delete Post?','delete_post','post_1')">Delete</button>
</p>
<p id="post_2">
I like pickles ...
<button onclick="Confirm.render('Delete Post?','delete_post','post_2')">Delete</button>
</p>
<button onclick="Alert.render('Hello World')">Custom Alert</button>
</body>
</html>
这可以让你给自定义警报。
此处的代码暴露:Alert Box
相关问题
- 1. 使用PHP和AJAX刷新页面的新事件通知
- 2. 页面刷新
- 3. 刷新页面
- 4. 刷新页面
- 5. JQuery BlockUI - 低吼通知不会触发。刷新页面
- 6. JQuery页面刷新
- 7. 页面刷新 - JavaScript
- 8. 当页面刷新
- 9. 刷新jsp页面
- 10. 刷新页面3
- 11. 刷新JSF页面
- 12. ICEFaces页面刷新
- 13. Javascript刷新页面
- 14. 页面刷新JS
- 15. 刷新iframe而不刷新父页面
- 16. 刷新JavaScript无刷新页面
- 17. 页面自动刷新而不刷新
- 18. 刷新div而不刷新页面
- 19. 刷新div而不刷新页面
- 20. Magento缓存刷新通知
- 21. 保持页面数据页面刷新
- 22. 更新面板刷新整个页面
- 23. jQuery Mobile的页面刷新
- 24. 更改在页面刷新
- 25. 刷新页面太多
- 26. 页面刷新点击ajax
- 27. 刷新页面在php
- 28. MVC中的页面刷新
- 29. 使用jQuery刷新页面
- 30. 刷新页面提交
我搜索了一下,我一直无法找到任何可靠或确定的事件,它检测到页面刷新。您可能会考虑避免页面刷新成为问题的情况。我可以想到几种方法:在POST上显示 *,显示'谢谢发布'或类似的内容,然后通过标题或javascript将用户重定向到另一个页面,显示您想要显示的内容 *使用AJAX执行发布操作。如果你这样做,那么浏览器刷新按钮和/或F5将不会重新执行AJAX,但会刷新当前页面。 –
该页面将为用户提供一个随机数字,而我只是不希望他们能够继续获得新的随机数字。 – fryingpantheist
考虑将其存储在cookie中。就像'如果用户没有cookie,给他们一个新的随机数,否则从cookie中随机数'。 –