jQuery禁用所有重定向(链接,表单提交,window.location更改等)

时间:2011-03-07 22:19:08

标签: jquery hyperlink redirect

是否可以使用javascript停用任何代码,使浏览器远离当前页面?

我尝试了以下代码,但它不起作用:

$(window).unload(function(e){
    event.stopPropagation();
    event.preventDefault();
    return false;
});

我猜这个代码不起作用,因为在卸载()的时候,为时已晚。

还有其他想法吗?

可能的实施: 1.禁用任何重定向的代码 2.绑定到可以执行此操作的所有元素(链接,表单,我还缺少什么?)

3 个答案:

答案 0 :(得分:5)

您可以在浏览器中弹出一条消息,询问用户是否希望离开该页面。这适用于强制浏览器离开当前页面的每个事件(甚至是表单提交和关闭浏览器)。

测试页面:http://dl.dropbox.com/u/3937673/test.html

JavaScript的:

window.onbeforeunload = function(e){
  var e = e || window.event;
  // For IE and Firefox (prior to 4)
  if (e){
    e.returnValue = 'Do you want to leave this page?';
  }
  // For Safari and Chrome
  return "Do you want to leave this page?";
};

或者使用jQuery:

$(window).bind('beforeunload', function(){
    return "Do you want to leave this page?";
});

答案 1 :(得分:0)

只需将其绑定到可能启动它的所有元素,

var stopLeaving = function(e){
    return confirm('Are you sure you want to leave this page?');
};

$('form').submit(stopLeaving);
$('a').click(stopLeaving);

答案 2 :(得分:0)

它应该是:

$(window).unload(function(e){
e.stopPropagation();
e.preventDefault();
return false;
});

但它不起作用。

来自api.jquery.com:

  

执行此代码后,只要浏览器离开当前页面,就会显示警报。无法使用.preventDefault()取消卸载事件。此事件可用,以便脚本可以在用户离开页面时执行清理。

http://api.jquery.com/unload/

所以,你能做的最好的事情就是如果他真的想要离开这个页面的话就提示用户。