我有非常简单的代码,只是在刷新页面之前显示一个警告。该代码使用Codeigniter作为框架(不确定Codeigniters是否与该问题有关(。我有一个视图文件(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>
然后我将此视图文件加载到控制器test.php中$this->负载->视图('test_v'(;
当我刷新页面时,我希望看到一个警告对话框,其中包含文本"你真的想执行该操作吗?",但是根本没有显示任何警告。我已经用IE、Firefox、Chrome进行了测试。没有一个有效。我还尝试将js代码添加到如下的主体标签中:
<body onbeforeunload=" return 'Do you really want to perform the action?'">
也不起作用。有人能帮忙吗?非常感谢!
我建议使用以下作为事件侦听器:
window.addEventListener('beforeunload', function (e) {
// Cancel the event
e.preventDefault(); // If you prevent default behavior in Mozilla Firefox prompt will always be shown
// Chrome requires returnValue to be set
e.returnValue = '';
});
根据MDN文章:
注意:为了防止不必要的弹出窗口,一些浏览器不会显示在加载前事件处理程序中创建的提示,除非与页面进行了交互。此外,有些根本不显示它们。
可能是您的问题的原因。我在一个页面上进行了测试,直到与该页面交互后才收到警报。