Javascript onbeforeunload在codeigniter中不工作

Javascript onbeforeunload在codeigniter中不工作,javascript,php,codeigniter,onbeforeunload,Javascript,Php,Codeigniter,Onbeforeunload,我有非常简单的代码,只是在刷新页面之前显示一个警告。代码使用Codeigniter作为框架(不确定Codeigniter是否与问题相关)。我有一个包含以下代码的视图文件(test_v.php): <?php ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body

我有非常简单的代码,只是在刷新页面之前显示一个警告。代码使用Codeigniter作为框架(不确定Codeigniter是否与问题相关)。我有一个包含以下代码的视图文件(test_v.php):

<?php ?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body >
<p>Test onbeforeunload</p>

<script type="text/javascript">
 window.onbeforeunload = function () {
  return 'Do you really want to perform the action?';
 }
</script>

</body>
</html>

卸载前测试

window.onbeforeunload=函数(){ 返回“是否确实要执行该操作?”; }
然后我将这个视图文件加载到controller test.php中 $this->load->view('test_v')

当我刷新页面时,我希望看到一个警告对话框,文本为“您真的想执行该操作吗?”,但没有显示任何警告。我用IE、Firefox、Chrome进行了测试。都不管用。 我还尝试将js代码添加到body标签中,如下所示:

<body onbeforeunload=" return 'Do you really want to perform the action?'">

也不行。
有人能帮忙吗?非常感谢

我建议像这样使用事件侦听器:

<body onbeforeunload=" return 'Do you really want to perform the action?'">
window.addEventListener('beforeunload',函数(e){
//取消活动
e、 preventDefault();//如果在Mozilla Firefox中阻止默认行为,将始终显示提示
//Chrome需要设置返回值
e、 返回值=“”;
});
Per:

注意:为了避免出现不必要的弹出窗口,某些浏览器不显示在beforeunload事件处理程序中创建的提示,除非页面已经与之交互。此外,有些根本不显示它们


可能是你的问题的原因。我在一个页面上进行了测试,直到与该页面交互后才收到警报。

谢谢你,迈克,但是你的代码也不起作用,事实上我以前也试过。我不认为这是因为浏览器阻止了警报,因为我尝试在函数中执行其他操作(例如使用window.location重定向到另一个网站),但仍然无法工作。我猜这个函数根本没有被执行。如果你使用这个确切的代码,它应该可以工作。您应该只使用一个普通的HTML文件进行测试,然后从那里开始。你的意思是我必须使用.html文件吗?请参阅。当您试图离开页面或重新加载时,应该会得到提示。是。我可以在离开或重新加载页面时得到提示。所以这不是浏览器的问题。我想这与Codeigniter有关,它是MVC结构。您的代码应该可以正常工作。在这个稍微修改过的版本中,@CBroe,是的,我在点击任何一个链接时都会弹出窗口,你能验证一下吗。因此,这个问题很可能与Codeigniter框架有关。但是CI是在服务器端,这对客户端编码时客户端的行为应该没有什么影响。@CBroe,我刚刚意识到,当我单击链接时得到的弹出窗口显示了一个非常不同的消息。在Chrome和IE上显示“您所做的更改可能无法保存”。但在Firefox上显示“此页面要求您确认您想离开-您输入的信息可能无法保存。”。没有一个浏览器显示“您真的想执行该操作吗?”,这是预期显示的内容,对吗?不是所有浏览器都会显示自定义消息,不。我猜在这种情况下,自定义消息可能存在某种滥用/欺诈的可能性。