小知識
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,所以此時其他的異步操作便被停止,因為預覽圖片是一個同步操作,所以當你點擊圖片時,圖片預覽優先級最高,其他動作暫停,當你再次點擊圖片回到原樣時,圖片預覽完成,在開發者工具里會自動繼續之前頁面被暫停的動作,但是真機調試卻不會。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。
|
新聞熱點
疑難解答