当窗口关闭时,onblur事件会触发吗?

5

我有一个文本框,并将 on-blur 事件附加到它上面。 我使用它来在用户聚焦页面上的其他元素时发送 Ajax 请求。 当用户关闭浏览器或浏览器选项卡时,我希望 on-blur 事件也会触发。 我不想使用 unload,因为它在某些浏览器中无法工作。 当窗口关闭时,on-blur 事件是否会触发?还是有什么方法可以在窗口关闭时发送 Ajax 请求。


没有 onblur 事件会在窗口关闭时触发。 - Pranav
即使它被解雇,每个浏览器处理卸载浏览器行为的方式都不会使任何解决方法相关,据我所知。 - A. Wolff
你将无法进行调用。这是一种竞态条件,浏览器将会终止连接。 - epascarello
3个回答

2
假设您的失焦事件发生在元素的 "target" 类上。
您也可以在 beforeunload 方法上附加事件。
$(window).bind('beforeunload',function(){
$(".target").blur();
});

在Internet Explorer中,模糊事件不会冒泡。因此,依赖模糊事件进行事件委派的脚本在不同浏览器之间无法保持一致性。

请查看

http://api.jquery.com/blur/


1

onblur属性可用于在窗口上设置失焦处理程序,在窗口失去焦点时触发。您可以使用类似以下内容的代码来获取用户更改窗口时的模糊事件触发。

http://jsfiddle.net/xkDgQ/

HTML是指超文本标记语言。
 <p>click on another window to fire the blur event for this browser window</p>

JavaScript
 window.onblur = blurText;

 function blurText() {
     alert("blur event detected!");
     // remove the event to stop an infinite loop!
     window.onblur = '';
 }

-1
不,只有在窗口关闭时才会触发onunloadonbeforeunload事件,即便如此,也并非所有浏览器都支持这两个事件。浏览会话的终止通常超出了js控制范围。
附:即使它们被触发,我认为运行时也没有足够的时间或内存分配来生成和触发XHR对象...

它确实会触发一个请求,这个答案是误导性的。 - Miquel Correa Casablanca

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接