Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
离开页面之前使用JavaScript_Javascript_Jquery - Fatal编程技术网

离开页面之前使用JavaScript

离开页面之前使用JavaScript,javascript,jquery,Javascript,Jquery,我想在用户离开页面之前进行确认。若他说ok,那个么它将重定向到新页面或取消离开。我试着和昂洛德一起去 <script type="text/javascript"> function con() { var answer = confirm("do you want to check our other products") if (answer){ alert("bye"); } else{ window.locat

我想在用户离开页面之前进行确认。若他说ok,那个么它将重定向到新页面或取消离开。我试着和昂洛德一起去

<script type="text/javascript">
function con() {
    var answer = confirm("do you want to check our other products")
    if (answer){

        alert("bye");
    }
    else{
        window.location = "http://www.example.com";
    }
}
</script>
</head>

<body onunload="con();">
<h1 style="text-align:center">main page</h1>
</body>
</html>

函数con(){
var answer=确认(“您想检查我们的其他产品吗”)
若有(答复){
警惕(“再见”);
}
否则{
window.location=”http://www.example.com";
}
}
主页
但它确认后,页面已经关闭?如何做好这件事

如果有人演示如何使用jQuery,那就更好了。

onunload
(或
onbeforeunload
)无法将用户重定向到其他页面。这是出于安全考虑

如果要在用户离开页面之前显示提示,请使用
onbeforeunload

window.onbeforeunload = function(){
  return 'Are you sure you want to leave?';
};
window.onunload = function() {
    alert('Bye.');
}
或者使用jQuery:

$(window).bind('beforeunload', function(){
  return 'Are you sure you want to leave?';
});
$(window).unload(function(){
  alert('Bye.');
});
这只会询问用户是否要离开页面,如果他们选择留在页面上,则无法重定向他们。如果他们选择离开,浏览器将转到他们让它去的地方

在卸载页面之前,您可以使用
onunload
执行一些操作,但不能从此处重定向(Chrome 14+阻止
onunload
中的警报):

或者使用jQuery:

$(window).bind('beforeunload', function(){
  return 'Are you sure you want to leave?';
});
$(window).unload(function(){
  alert('Bye.');
});

要使用Chrome 14+制作popop,您需要执行以下操作:

jQuery(window).bind('beforeunload', function(){
    return 'my text';
});

当您还检测到表单状态是否已更改时,将询问用户是否要留下。

此代码

$('#form').data('serialize',$('#form').serialize()); // On load save form current state

$(window).bind('beforeunload', function(e){
    if($('#form').serialize()!=$('#form').data('serialize'))return true;
    else e=null; // i.e; if form state change show warning box, else don't show it.
});

您可以使用Google JQuery表单序列化函数,这将收集所有表单输入并将其保存在数组中。我想这个解释已经足够了:)

这将在离开当前页面时发出警报

<script type='text/javascript'>
function goodbye(e) {
    if(!e) e = window.event;
    //e.cancelBubble is supported by IE - this will kill the bubbling process.
    e.cancelBubble = true;
    e.returnValue = 'You sure you want to leave?'; //This is displayed on the dialog

    //e.stopPropagation works in Firefox.
    if (e.stopPropagation) {
        e.stopPropagation();
        e.preventDefault();
    }
}
window.onbeforeunload=goodbye; 

</script>

功能(e){
如果(!e)e=window.event;
//e、 IE支持cancelBubble-这将终止冒泡过程。
e、 取消气泡=真;
e、 returnValue='确实要离开吗?';//这将显示在对话框上
//e、 stopPropagation在Firefox中工作。
如果(如停止播放){
e、 停止传播();
e、 预防默认值();
}
}
window.onbeforeunload=再见;

您可以使用下面的一行,在离开页面之前始终询问用户

window.onbeforeunload = s => "";

要询问用户页面上的内容何时被修改,请参阅。

这是我在有未保存数据时显示确认消息所做的操作

window.onbeforeunload=函数(){
如果(isDirty){
返回“存在未保存的数据”;
}
返回未定义;
}
返回
undefined
将禁用确认

window.onbeforeunload = undefined;
注意:返回
null
不适用于IE

您还可以使用
undefined
禁用确认

window.onbeforeunload = undefined;

关闭此窗口,按F5键或单击下面的链接以调用onbeforeunload事件

函数myFunction(){ return“在这里写一些聪明的东西…”; }

只是稍微有用一点,启用和禁用

$(window).on('beforeunload.myPluginName', false); // or use function() instead of false
$(window).off('beforeunload.myPluginName');

通常,当用户在表单中进行了更改但未保存时,您希望显示此消息

仅当用户更改了某些内容时,才使用此方法显示消息

var form = $('#your-form'),
  original = form.serialize()

form.submit(function(){
  window.onbeforeunload = null
})

window.onbeforeunload = function(){
  if (form.serialize() != original)
    return 'Are you sure you want to leave?'
}

这里的大多数解决方案都不适合我,所以我使用了找到的解决方案

我还添加了一个变量来允许是否使用确认框

window.hideWarning = false;
window.addEventListener('beforeunload', (event) => {
    if (!hideWarning) {
        event.preventDefault();
        event.returnValue = '';
    }

});


哈哈哈…是的,没错…但幸运的是,这不是我的网站…我的客户要求在他的sideYa上这样做,但我真的很高兴在我即将退出未保存的Gmail页面时看到这些提醒。注意,在Firefox 4+上,只会显示一条默认消息,而不是自定义消息@Joseph:当您从
onbeforeunload
返回字符串时,浏览器会将该字符串放入自己的确认框中。在
onnload
onbeforeuload
中使用
confirm
是无用的,因为只有浏览器可以控制它的去向,而不是您。查看此演示:请注意,如果您想有条件地在
onbeforeunload
中显示消息,
return false
将使浏览器在对话框中显示“false”。如果希望在没有用户警报的情况下关闭窗口,则需要
返回undefined
。@Adam:Firefox决定不允许自定义该消息。这是浏览器的一部分,因此不能覆盖该行为。其他浏览器也可能正在取消自定义消息的功能。请看:@rockethazmatchrome也有。它现在只说:你想离开这个网站吗?您所做的更改可能无法保存。@programmer5000这很好,因为一些恶意网站可能会显示一些无用的警告(例如“您不能在不提供银行信息的情况下离开”),您知道这为什么不起作用吗?它会被其他js函数/jquery插件覆盖吗?我正在运行一个webrtc应用程序,我想在客户端关闭窗口时“关闭”一些东西,因此需要处理窗口关闭。这可能会被任何其他插件等覆盖,大多数开发人员在选择器上犯了错误,如果您怀疑是否被覆盖,请将jquery代码放在关闭标记之前。是的。。。如果您有一些JS代码在页面加载后隐藏或禁用输入字段,那么当您执行比较隐藏\禁用字段的检查时,将不会序列化。检查当然会失败这里有一个解决办法:顺便说一下。。。这里有一个更好的方法:应该注意的是,按下submit按钮时也会发出警告。点击“提交”按钮可以再次序列化表单,以防止出现这种情况。你知道这为什么不起作用吗?我正在使用chrome(最新版本)和大量的jquery插件,但当我关闭窗口时,我没有收到任何警报。@嘿,为什么投票失败?它在工作。。。。您需要确保它位于
jQuery(document)
之外,我建议您在加载所有插件后将其放好。此外,此代码段不会发出任何警报。。。这只是一个带有
return
的演示。如果我刷新页面或刚刚退出,它也会启动吗?是的,刷新或退出时会启动