国产探花免费观看_亚洲丰满少妇自慰呻吟_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監聽頁面刷新和關閉功能,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 怀化市| 西峡县| 仁怀市| 梓潼县| 瓮安县| 东宁县| 德保县| 微博| 文成县| 丰城市| 海阳市| 唐河县| 进贤县| 木里| 宜宾市| 光山县| 海城市| 扎鲁特旗| 莫力| 巴马| 綦江县| 新田县| 黄陵县| 兴隆县| 洞头县| 同德县| 河津市| 永和县| 库车县| 大方县| 攀枝花市| 孝义市| 高陵县| 万源市| 泊头市| 佳木斯市| 贺州市| 浦北县| 涿鹿县| 台东县| 叶城县|