我正在使用网络套接字连接进行通信。但是当用户刷新页面时,我想关闭此 Web 套接字连接。我还使用window.onbeforeunload
事件向用户显示带有自定义文本的确认框。如果用户选择"不重新加载"选项,则没有操作(工作正常)但是如果用户选择重新加载选项,我想关闭 Web 套接字连接。我不知道如何实现这一目标。我试图打电话给window.unload
并试图关闭网络套接字连接,但它不起作用。我的代码如下。
window.onbeforeunload = function(e) {
return "you are closing this web page';
};
window.unload = function(e) {
webSockect.closeConnection();
};
请告知如何实现此目的。
窗口事件以 on
为前缀。
尝试使用window.onunload = ...
甚至更好的
window.addEventListener('unload', ...)
.
使用 addEventListener
时,指定事件名称时不带前缀on
。
阅读更多:WindowEventHandlers.onunload
首先,上面的代码中存在语法错误,您编写了:
window.onbeforeunload = function(e) {
return "you are closing this web page';
};
因此,引号的类型应该是单引号或双引号,在字符串的开头和结尾相同。
它应该是,并且它将起作用:
window.onbeforeunload = function(e) {
return "you are closing this web page";
};
====
回到正题。使用卸载提示所能做的就是更改消息。其他任何内容都不起作用,例如:
- 更改提示按钮上的操作
- 更改提示的按钮文本
- 更改框的 UI
问:即使你在return
函数之前写了一些东西,浏览器也会忽略。
实际上,如果将方法分配给变量,然后返回变量,则可以在关闭时运行该方法。
function unloadWebSocket()
{
webSockect.closeConnection();
}
window.onbeforeunload = function(e)
{
var x = unloadWebSocket();
return x;
};
虽然我没有使用websockets的经验,但我知道这适用于同步ajax请求。