如何调用 window.unload

How to call window.unload

本文关键字:window unload 调用 何调用      更新时间:2023-09-26

我正在使用网络套接字连接进行通信。但是当用户刷新页面时,我想关闭此 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请求。