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

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

  •  
  •   whileFalse Aug 21, 2017 5481 views
    This topic created in 3186 days ago, the information mentioned may be changed or developed.

    需要数秒的网络通讯

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

    @shyling #3 能详细说说嘛?
    jugelizi
        7
    jugelizi  
       Aug 21, 2017
    都关页面了还回调?
    annielong
        8
    annielong  
       Aug 21, 2017
    服务端 session 或者 cookie,然后其他页面判断,实现是能实现,关键是看合适不合适
    haitang
        9
    haitang  
       Aug 21, 2017
    貌似应该做长连接( ws ),及时把下一步所需数据回传给后端保存,在页面关闭( ws 中断)后执行所需任务
    7Brant
        10
    7Brant  
       Aug 21, 2017 via iPhone
    我觉着只能是 beforeunload 事件吧,如果这个符合「关闭页面时」...
    66beta
        11
    66beta  
       Aug 21, 2017
    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 '关闭提示';
    };
    fishman
        12
    fishman  
       Aug 21, 2017 via Android
    技术上实现不方便的,可以从业务层考虑。比如用户点击关闭后给用户一个提示,拖点时间,在这个过程去执行你的回调。
    jin5354
        13
    jin5354  
       Aug 21, 2017
    不能,浏览器在关闭页面时只允许弹个窗提示,不允许执行其他耗时任务
    autoxbc
        14
    autoxbc  
       Aug 21, 2017
    如果同步数据很重要,就应该在每一次数据变动时同步,而不是在关闭页面时再同步
    lerry
        15
    lerry  
       Aug 21, 2017
    搞一个 Chrome 插件怎么样
    viko16
        16
    viko16  
       Aug 21, 2017   2
    https://developer.mozilla.org/en-US/docs/Web/API/Navigator/sendBeacon

    虽然兼容不怎么样,但是 sendBeacon 就是为了干这个的
    terrawu
        17
    terrawu  
       Aug 21, 2017
    outlook.com 之前这么干过,在天朝卡到飞起,后来取消了。
    LeeSeoung
        18
    LeeSeoung  
       Aug 21, 2017
    说目的,而不是说实现方式。。
    winglight2016
        19
    winglight2016  
       Aug 21, 2017
    @viko16 IE 和 Safari 都不支持,没法推广了
    580a388da131
        20
    580a388da131  
       Aug 21, 2017
    Windows 正在关机
    liuzhedash
        21
    liuzhedash  
       Aug 21, 2017
    我只想在关闭时操作一下 localStorage,似乎也不行
    371657110
        22
    371657110  
       Aug 21, 2017
    之前分享 sendBeacon 的时候做了个 demo
    发现监听 unload 事件时候发送一个同步请求可以阻塞 unload 进程...
    所以.可以考虑下 sendBeacon
    About     Help     Advertise     Blog     API     FAQ     Solana     3245 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 169ms UTC 14:18 PVG 22:18 LAX 07:18 JFK 10:18
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86