微信小程序開發中遇到的問題之wx.previewImage


  wx.previewImage是微信小程序官方提供的預覽圖片功能的api。在新頁面中全屏預覽圖片。預覽的過程中用戶可以進行保存圖片、發送給朋友等操作。

  那么他有哪些坑呢?

  我遇到的問題藏得比較深,我是在使用wxParse解析富文本時發現的。wxParse在解析img時會給它加上點擊事件,那么這個點擊事件是什么呢?圖在下面:

   

  從中可以看到是微信的圖片預覽功能。其中that.setData({isPreview:true})是我加上去用來判斷是否點擊了圖片,本身是沒有的,此時先忽略掉。

  首先,點擊圖片預覽時,會終止頁面一切正在執行的操作,這是為什么呢?我猜測是觸發了頁面的onHide函數,我在onHide中打log時果不其然,驗證了我是正確的。

  當你再次點擊圖片回去時,會再次觸發頁面的onShow事件。所以,當你在onHide或者onShow函數里有執行的操作的時候就要注意了,這兩個函數都會被觸發,所以這時候就需要判斷,這兩個函數被觸發是來源於正常的頁面加載隱藏還是來源於點擊圖片預覽,於是便有了我上面在wxParse的源碼wxParse.js里的wxParseImgTap里加了一句that.setData({isPreview:true}),而后我們可以用isPreview來判斷onShow和onHide是否是被預覽圖片觸發的。

  此時我們並沒有解決頁面事件被終止的事實,因為線程被終止了。因為js里是單線程的,預覽圖片時會向服務器請求圖片src,所以此時其他的異步操作便被停止,因為預覽圖片是一個同步操作,所以當你點擊圖片時,圖片預覽優先級最高,其他動作暫停,當你再次點擊圖片回到原樣時,圖片預覽完成,在開發者工具里會自動繼續之前頁面被暫停的動作,但是真機調試卻不會。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM