首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
V2EX  ›  JavaScript

JS 能否在关闭页面时执行一个较长时间的回调

  •  
  •   whileFalse · 276 天前 · 2207 次点击
    这是一个创建于 276 天前的主题,其中的信息可能已经有所发展或是发生改变。

    需要数秒的网络通讯

    22 回复  |  直到 2017-08-21 18:09:01 +08:00
        1
    otakustay   276 天前
    不能
        2
    denano   276 天前   ♥ 1
    你可以试试监听关闭页面的事件,然后执行一个同步的方法。这样做的话如果方法执行时间比较长,就会有一种点了关闭页面却没有反馈的糟糕体验
        3
    shyling   276 天前
    耗时任务可以参考 Inbox 的处理。。。
        4
    lommo   276 天前
    直接关闭标签页 怎么执行
        5
    autoxbc   276 天前   ♥ 1
    数据存本地,下次启动再同步
        6
    whileFalse   276 天前
    @autoxbc #5 这个不行,因为涉及到和其他设备同步。

    @shyling #3 能详细说说嘛?
        7
    jugelizi   276 天前
    都关页面了还回调?
        8
    annielong   276 天前
    服务端 session 或者 cookie,然后其他页面判断,实现是能实现,关键是看合适不合适
        9
    haitang   276 天前
    貌似应该做长连接( ws ),及时把下一步所需数据回传给后端保存,在页面关闭( ws 中断)后执行所需任务
        10
    7Brant   276 天前 via iPhone
    我觉着只能是 beforeunload 事件吧,如果这个符合「关闭页面时」...
        11
    66beta   276 天前
    https://developer.mozilla.org/zh-CN/docs/Web/API/Window/onbeforeunload

    window.onbeforeunload = function (e) {
    e = e || window.event;
    // 兼容 IE8 和 Firefox 4 之前的版本
    if (e) {
    e.returnValue = '关闭提示';
    }
    // Chrome, Safari, Firefox 4+, Opera 12+ , IE 9+
    return '关闭提示';
    };
        12
    fishman   276 天前 via Android
    技术上实现不方便的,可以从业务层考虑。比如用户点击关闭后给用户一个提示,拖点时间,在这个过程去执行你的回调。
        13
    jin5354   276 天前
    不能,浏览器在关闭页面时只允许弹个窗提示,不允许执行其他耗时任务
        14
    autoxbc   276 天前
    如果同步数据很重要,就应该在每一次数据变动时同步,而不是在关闭页面时再同步
        15
    lerry   276 天前
    搞一个 Chrome 插件怎么样
        16
    viko16   276 天前   ♥ 2
    https://developer.mozilla.org/en-US/docs/Web/API/Navigator/sendBeacon

    虽然兼容不怎么样,但是 sendBeacon 就是为了干这个的
        17
    terrawu   276 天前
    outlook.com 之前这么干过,在天朝卡到飞起,后来取消了。
        18
    LeeSeoung   276 天前
    说目的,而不是说实现方式。。
        19
    winglight2016   276 天前
    @viko16 IE 和 Safari 都不支持,没法推广了
        20
    580a388da131   276 天前
    Windows 正在关机
        21
    liuzhedash   276 天前
    我只想在关闭时操作一下 localStorage,似乎也不行
        22
    371657110   276 天前
    之前分享 sendBeacon 的时候做了个 demo
    发现监听 unload 事件时候发送一个同步请求可以阻塞 unload 进程...
    所以.可以考虑下 sendBeacon
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   鸣谢   ·   885 人在线   最高记录 3541   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 20ms · UTC 17:48 · PVG 01:48 · LAX 10:48 · JFK 13:48
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1