国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

Vue監聽頁面刷新和關閉功能

2019-11-19 11:18:16
字體:
來源:轉載
供稿:網友

我在做項目的時候,有一個需求,在離開(跳轉或者關閉)購物車頁面或者刷新購物車頁面的時候向服務器提交一次購物車商品數量的變化。

將提交的一步操作放到 beforeDestroy 鉤子函數中。

beforeDestroy() { console.log('銷毀組件') this.finalCart()},

但是發現  beforeDestroy 只能監聽到頁面間的跳轉,無法監聽到頁面刷新和關閉標簽頁。

所以還是要借助 onbeforeunload 事件。

順便復習了一下 JavaScript 中的一些加載,卸載事件:

  • 頁面加載時只執行 onload 事件。
  • 頁面關閉時,先 onbeforeunload 事件,再 onunload 事件。
  • 頁面刷新時先執行 onbeforeunload 事件,然后 onunload  事件,最后 onload  事件。

Vue中監聽頁面刷新和關閉

1. 在methods中定義事件方法:

methods: { beforeunloadFn(e) {  console.log('刷新或關閉')  // ... }}

2. 在created 或者 mounted 生命周期鉤子中綁定事件

created() { window.addEventListener('beforeunload', e => this.beforeunloadFn(e))}

3. 在 destroyed 鉤子卸載事件

destroyed() { window.removeEventListener('beforeunload', e => this.beforeunloadFn(e))}

測試了頁面刷洗和關閉都能監聽到。

回到我自己的項目,可以使用 onbeforeunload 事件和 beforeDestroy 鉤子函數結合:

created() { this.initCart() window.addEventListener('beforeunload', this.updateHandler)},beforeDestroy() { this.finalCart() // 提交購物車的異步操作},destroyed() { window.removeEventListener('beforeunload', this.updateHandler)},methods: { updateHandler() {  this.finalCart() }, finalCart() {  // ... }}

總結

以上所述是小編給大家介紹的Vue監聽頁面刷新和關閉功能,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 浙江省| 东安县| 增城市| 琼结县| 沅陵县| 文昌市| 勃利县| 通化市| 井研县| 略阳县| 汾西县| 曲麻莱县| 鹤岗市| 广饶县| 沙河市| 金沙县| 五华县| 正镶白旗| 涪陵区| 常宁市| 庐江县| 福贡县| 荔浦县| 鞍山市| 成安县| 达拉特旗| 兰考县| 璧山县| 宁都县| 天全县| 兴山县| 玛曲县| 北安市| 绵竹市| 宝清县| 沂水县| 富平县| 金寨县| 彝良县| 怀远县| 曲松县|