我可以停止JS位置.没有弹出窗口
Can I stop JS location.href without a popup?
我想构建一个JS外部脚本(标签),它停止代码(通常不是我的)像位置。如果不使用弹出窗口,就不会发生这种情况。我尝试了如下操作:
$(window).bind('beforeunload', function() {
window.stop();
event.stopImmediatePropagation();
event.preventDefault();
location.href = '#';
});
但似乎没有什么帮助。同样,我需要它而不使用:返回"are you sure?"也许是另一次回调?
谢谢,丹
使用onbeforeunload
确认导航离开的正确方法是只返回您想要显示的消息字符串。MDN是这么说的
函数应该给Event对象的returnValue属性分配一个字符串值,并返回相同的字符串
所以你的onbeforeunload
函数的行为,你要求将只是(相同的绑定它与jquery,特别是因为onbeforeunload不支持多个事件监听器像其他事件做)
window.onbeforeunload = function() {
return "Are you sure?";
};
但讽刺的是,Firefox出于安全考虑不支持此功能。
注意,在Firefox 4和更高版本中,返回的字符串不会显示给用户。参见bug 588292。
编辑:我阅读了更多的bug报告。他们做出这个决定的主要原因是:"1。删除站点提供的文本,因为这是一个安全问题(浏览器对话框中不受信任的文本)。我想知道他们对alert
有什么看法?
大多数现代浏览器(chrome, IE 9+或更早版本,以及Opera,我肯定知道)将忽略您尝试在onbeforeunload
函数中执行的任何操作,而不是返回用于显示的字符串。这是为了防止劫持用户的浏览器,打开弹出窗口,通过指向用户另一个可能是恶意的域来覆盖导航尝试等。
编辑2:我显然是错误的。只有一些的东西在onbeforeunload
中是不允许的,它们只是碰巧主要是你在样本代码中尝试的类型,与事件传播和页面导航有关。从FF bug报告的评论深处,用户oyasumi发布了一个链接到这个jsFiddle的工作,为FF 4+用户显示自定义文本:http://jsfiddle.net/ecmanaut/hQ3AQ/所以显然调用alert()
仍然是允许的,甚至在onbeforeunload
中,滑稽的是,这正是"bug"修复"的原始原因:在浏览器/应用程序/操作系统/官方对话框中显示自定义文本。
您是否尝试使用"return false" ?此外,您应该将事件发送到您的函数。这里是一个例子,你可以阻止一个按钮点击和超链接
<input type="button" value="click me" />
<a href="www.google.com"> google </a>
$(document).ready(function(){
$('input[type="button"]').click(function(e){
e.preventDefault();
});
$('a').click(function(e){
e.preventDefault();
});
});
这里是链接http://jsfiddle.net/juTtG/143/
- JavaScript窗口.位置不;我不在内容编辑器Web部件中工作
- JS窗口.位置不起作用
- 是否可以模拟 qUnit 测试的窗口位置对象
- 窗口位置href更改不会重新加载
- 如何在提交事件的底部设置窗口位置
- 如何在模式打开时更改窗口.位置
- 谷歌地图偏移标记/信息窗口位置(panTo/setCenter)
- 书签窗口位置javascript
- 单元测试窗口位置分配的角度问题
- JavaScript窗口位置延迟
- 如果类名和窗口位置匹配,请执行一些操作
- 会话丢失窗口.位置.href.
- JavaScript:window.conf,有两个窗口位置
- 如何从顶部获取窗口位置(以像素为单位)
- 如何在窗口位置之前显示消息 2 秒
- 休息标记位置 + 信息窗口位置
- 将标头添加到窗口.位置.路径名
- 窗口位置向上一级
- 将窗口位置替换为锚点
- 在谷歌地图中设置信息窗口位置