天天看點

H5的VisibilityChange事件和微信小程式生命周期show/onshow

作者:程式員蘇小胖
H5的VisibilityChange事件和微信小程式生命周期show/onshow

微信小程式生命周期show

微信小程式的Page生命周期中的show事件是指當頁面被展示時觸發的事件。它在頁面第一次展示、從背景切換到前台展示、通過頁面棧後退傳回到目前頁面等情況下都會被觸發。show事件通常用于監聽頁面的展示和重新整理資料。

H5的VisibilityChange事件

VisibilityChange事件是基于網頁可見性狀态的變化而觸發的事件,在Web開發中使用。它可以響應使用者切換到其他标簽頁、最小化浏覽器視窗等情況下頁面可見性的變化。VisibilityChange事件通常用于根據頁面可見性的狀态來暫停/播放媒體、節省計算資源等操作。

Page({
  pageLifetimes: {
    // 頁面展示時觸發
    show: function() {
      console.log('頁面展示');
      // 在這裡可以執行頁面展示時需要進行的操作
    }
  },
  
  // 其他頁面方法和自定義方法...
})           
Page({
  // 頁面加載時觸發
  onLoad: function(options) {
    console.log('頁面加載');
    console.log('參數options:', options);
    // 可以在這裡進行初始化操作或加載資料
  },
  
  // 頁面初次渲染完成時觸發
  onReady: function() {
    console.log('頁面初次渲染完成');
    // 可以在這裡進行頁面布局的初始化或其他操作
  },
  
  // 頁面顯示時觸發
  onShow: function() {
    console.log('頁面顯示');
    // 可以在這裡進行資料重新整理或其他展示相關的操作
  },
  
  // 頁面隐藏時觸發
  onHide: function() {
    console.log('頁面隐藏');
    // 可以在這裡進行一些資源釋放或暫停操作
  },
  
  // 頁面解除安裝時觸發
  onUnload: function() {
    console.log('頁面解除安裝');
    // 可以在這裡進行一些清理操作或資源釋放
  },
  
  // 其他自定義方法...
})           

兩者異同

VisibilityChange事件和微信小程式的Page生命周期中的show事件有一些相似之處,但不能完全替換。

VisibilityChange事件可以在某些情況下用于模拟小程式頁面展示的行為

微信小程式中無法直接使用VisibilityChange事件來替代Page的show事件。微信小程式提供了自己的生命周期函數和事件來管理小程式頁面的展示和隐藏,包括onShow和onHide等。

是以,如果您想在微信小程式中監聽頁面的展示行為,應使用小程式提供的onShow生命周期函數。如果您需要根據頁面可見性的變化來執行特定操作,可以在小程式的onShow生命周期函數中監聽VisibilityChange事件,并根據頁面的可見性狀态進行相應的處理。

小程式page onshow和pageLifetimes show異同

pageLifetimes 中的 show 生命周期函數和頁面對象的 onShow 生命周期函數在功能上是相似的,它們都是用于監聽頁面展示的生命周期函數。然而,它們之間存在一些差別:

  1. 定義位置:pageLifetimes 中的生命周期函數是在頁面對象的外部進行定義,而 onShow 生命周期函數是在頁面對象内部進行定義。
  2. 調用時機:show 生命周期函數在頁面展示時觸發,即從其他頁面切換到目前頁面時。而 onShow 生命周期函數在頁面展示時觸發,但在頁面初次加載時也會觸發一次。
  3. 覆寫關系:如果同時在 pageLifetimes 和頁面對象内定義了同名的生命周期函數,pageLifetimes 中的生命周期函數會覆寫頁面對象内的對應函數。換句話說,pageLifetimes 中的生命周期函數具有更高的優先級。
  4. 作用範圍:pageLifetimes 中的生命周期函數對目前頁面以及從目前頁面跳轉到的下一個頁面都有效。而 onShow 生命周期函數僅對目前頁面有效。

綜上所述,pageLifetimes 中的 show 生命周期函數和頁面對象的 onShow 生命周期函數在功能上相似,都用于監聽頁面展示的時機。不過它們的定義位置、調用時機、覆寫關系和作用範圍等方面有所差別。你可以根據具體的需求選擇合适的生命周期函數來監聽頁面展示事件,并在對應的函數中執行相應的操作。

VisibilityChange示例

document.addEventListener('visibilitychange', function() {
  if (document.visibilityState === 'visible') {
    // 頁面變為可見狀态
    // 執行相應操作
  } else if (document.visibilityState === 'hidden') {
    // 頁面變為隐藏狀态
    // 執行相應操作
  }
});           

document.visibilityState是一個表示頁面可見性狀态的隻讀屬性,它有以下幾個可能的值:

  • visible:頁面處于可見狀态。
  • hidden:頁面處于隐藏狀态。
  • prerender:頁面正在預渲染階段,即頁面正在加載但并不會立即顯示給使用者。
  • unloaded:頁面已解除安裝或尚未加載。

另外

document.addEventListener('visibilitychange', function() {
  if (document.hidden) {
    // 頁面變為隐藏狀态
    // 執行相應操作
  } else {
    // 頁面變為可見狀态
    // 執行相應操作
  }
});           

document.hidden是一個屬性,它是一個布爾值。當頁面處于隐藏狀态時,document.hidden的值為true;當頁面處于可見狀态時,它的值為false。這個屬性可以直接用于判斷頁面的可見性,它的相容性較好,可以在大多數現代浏覽器中使用。

H5 pageshow和VisibilityChange事件

PageShow事件:

  • PageShow事件是指在網頁加載或重新加載後,浏覽器觸發的事件。
  • 當一個頁面被打開或從緩存中恢複時,PageShow事件會被觸發。
  • PageShow事件在頁面顯示給使用者之前觸發,可以用于執行特定的操作或初始化頁面内容。

VisibilityChange事件:

  • VisibilityChange事件是指當網頁的可見性狀态發生變化時,浏覽器觸發的事件。
  • 當使用者切換到其他标簽頁或最小化浏覽器視窗時,網頁的可見性狀态會發生變化。
  • VisibilityChange事件允許開發者在網頁可見性發生變化時執行特定的操作,如暫停視訊播放或節省計算資源。

這兩個事件通常與Web開發中的頁面生命周期和使用者互動有關。PageShow事件适用于在頁面加載或重新加載後執行一些初始化操作,而VisibilityChange事件适用于在頁面可見性發生變化時進行響應性的調整或操作。

請注意,具體的使用方法和事件監聽方式可能因不同的程式設計語言、架構或浏覽器而有所不同。是以,如果您需要詳細了解如何在特定環境中使用這些事件,請參考相關的程式設計文檔或資源。

H5的VisibilityChange事件和微信小程式生命周期show/onshow