微信小程序開發中遇到的坑
開發文檔:摸這里
坑一:在使用自定義組件的過程中使用了選項 addGlobalClass,在IDE里怎么都沒用,但是在真機上運行就可以。
分析:
也許是padding,margin這些屬性比較不好兼容吧
-------------------------------------------分---隔---線-----------------------------------------------------
坑二:在使用自定義組件中,如果要使用slot,就一定要加上multipleSlots屬性。即便是使用一個slot也要。
-------------------------------------------分---隔---線-----------------------------------------------------
坑三:畫布(Canvas)和h5原生畫布有一個很重要的區別:所有的繪畫,最后都要調用draw方法,否則是不會呈現在畫布上的。
-------------------------------------------分---隔---線-----------------------------------------------------
坑四:iOS真機調試的時候,報錯:request:fail 發生了 SSL 錯誤,無法建立與該服務器的安全連接。
解決過程:
測試了下,在安卓機上可以正常運行,基本定位是iOS問題。
百度說:2017年1月1日起,蘋果強制所有 app 滿足 HTTPS,即 iOS9 推出的 App Transport Security (ATS) 特性。
蘋果ATS檢測:(摸這里) 該工具提供了一個檢測域名是否符合標準的方法。將我的域名輸入,果然提示了一個錯誤:服務器檢測結果(未通過)不支持TLS1.2。也就是說證書沒問題,是服務器配置問題。
接著百度 “支持TLS1.2”。找到一個配置TLS1.2的教程(摸這里)。配置完后,重啟服務器,搞定。
-------------------------------------------分---隔---線-----------------------------------------------------
坑五:在map控件中,如果只使用cover-image,事件是會冒泡的,會先觸發map事件,再觸發cover-image事件。
解決方法:必須將cover-image放到cover-view里面,在cover-view中綁定事件,這樣就不會冒泡了。
續坑五:真機中,cover-view中對于border的支持很不完整,不支持偽類:before、:after等;總之一句話,真機對cover-view整體的支持都非常不好,我佛了。
-------------------------------------------分---隔---線-----------------------------------------------------
坑六:獲取用戶信息必須手動觸發,且按鈕必須加上 open-type="getUserInfo";否則在手機上將無法正常運行。
坑七:涉及到請求服務器的操作,記得要第一時間配置合法域名。最坑的是開發時不需要合法域名,體驗版需要,導致很難定位到問題,特別浪費時間。
坑八:防止事件冒泡,將bindtap改成catchtap;詳細情況摸這里。
坑九:button的默認樣式中,border是通過偽元素:after來實現的;
坑十:公眾號文章如果在小程序打開,又不能操作公眾號的域名上傳校驗文件;記住:同主體關聯的公眾號文章不需要配置業務域名。
-------------------------------------------分---隔---線-----------------------------------------------------
坑十一:客戶端加密數據解密時報錯:填充無效,無法被移除。如果這個bug100%發生,說明解密方法有問題。如果時好時壞,證明解密方法沒問題,是你獲取session_key的時機出了問題,它過期了。一定要先調用wx.login()再調用wx.getUserInfo()或者wx.getPhoneNumber()獲取加密數據。如果是bindgetuserinfo或者bindgetphonenumber這類的事件,建議在onload時就調用wx.login(),將session_key緩存下來。
-------------------------------------------分---隔---線-----------------------------------------------------
坑十二:使用scroll-view橫向滾動時,單位元素由于內容要求高度不定,導致在手機上查看時出現錯位現象,開發工具顯示正常。
解決方案:在單位元素的樣式上加上vertical-align屬性。
-------------------------------------------分---隔---線-----------------------------------------------------
坑十七:scroll-view在滾動到底部或者頂部的時候,bindscrolltoupper和bindscrolltolower是反復觸發的,如果在這些事件里有復雜的邏輯處理應該使用setTimeout來減少時間發生的頻次。
-------------------------------------------分---隔---線-----------------------------------------------------
坑十八:scroll-view如果內容沒有達到容器的滾動高度是不會觸發bindscrolltoupper和bindscrolltolower的。如果要保持體驗的一致,需要補足高度讓內部高度超過容器高度。
-------------------------------------------分---隔---線-----------------------------------------------------
坑十三:在申請小程序的時候,如果你有一個認證過的公眾號,你可以在他的“小程序”菜單中“快速注冊并認證小程序”,使用同一套資質,無須重復繳納認證費用,只需要準備一個郵箱賬號即可,方便快捷。
-------------------------------------------分---隔---線-----------------------------------------------------
坑十四:組件和引用組件的頁面不能使用 id 選擇器(#a)、屬性選擇器([a])和標簽名選擇器,請改用 class 選擇器。
-------------------------------------------分---隔---線-----------------------------------------------------
坑十五:wxacode.getUnlimited接口中的屬性page必須是小程序存在的頁面(否則報錯)。
-------------------------------------------分---隔---線-----------------------------------------------------
坑十六:wx.showModal的參數cancelText和confirmText長度不能超過4個字符,否則會彈出失敗。
-------------------------------------------分---隔---線-----------------------------------------------------
坑十七:微信地理位置接口申請越來越嚴格了,遇到反復申請不下來的情況,不妨先發布一版代碼,再來申請。
備案、認證是基本要求,同時,申請理由和圖片等等盡量合理,和你的小程序的類目盡量一致。