關於小程序一些小功能的代碼都在這個GitHub上,感興趣的能夠去看看,
https://github.com/huihuijiang/miniProgram 目前有:列表左滑刪除,拖拽浮標android
1、小程序坑
1.scroll-view橫向滾動的時候,包含文字圖片等,元素錯位,第二個元素掉下去;
hack:給子元素添加 vertical-align:top;ios
當使用scroll-view橫向滾動時要注意幾點:
父元素設置寬度,加上這兩個樣式overflow: hidden; white-space: nowrap;自元素設置成display: inline-block;vertical-align:top;
git
2、android 和 ios 兼容
1.不定寬高元素使用全鋪背景圖片,ios沒有問題,安卓手機背景圖片顯示空白
hack: background-size:cover;(元素加上這一屬性)
github
2.安卓手機緩存嚴重問題web
hack:在圖片後再加上一串隨機數json
在wxs中:(有些iOS手機不能識別小數的隨機數,因此最好用整數 var random = Math.floor(Math.random() * 10 + 1) * 9;
小程序
3.ios不支持默認最小定時時間(0或不寫)緩存
4.截取字符串遇到表情,安卓沒問題,ios會報錯;
hack:(判斷是否有表情)微信
var reg = /\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/;
var re = new RegExp(reg);
var en = str.slice(27, 29);
if (re.test(en)) {
title = str.slice(0, 27)
} else {
title =str.slice(0, 28)
}
5.getTime()時候,iOS必須把時間格式00-00-00轉換成00/00/00dom
6.小程序獲取膠囊按鈕返回值(一直在變,目前的兼容代碼
const self = this;
wx.getSystemInfo({
success: function (res) {
self.globalData.phonexh = res.model.indexOf("iPhone X");
var menuButton = wx.getMenuButtonBoundingClientRect();
//導航欄高度
self.globalData.totalTopHeight =
menuButton.height == menuButton.bottom ?
menuButton.height :
res.model.indexOf("iPhone") == 0 || (res.platform == 'android' && res.version == '7.0.3') ?
menuButton.top + menuButton.height + (menuButton.top - res.statusBarHeight) :
menuButton.top + menuButton.height + menuButton.top + res.statusBarHeight
//狀態欄高度
self.globalData.statusBarHeight = res.statusBarHeight;
//標題欄高度
self.globalData.titleBarHeight = self.globalData.totalTopHeight - res.statusBarHeight;
}
})
7.iOS使用overflow:auto;滾動會卡頓
hack:-webkit-overflow-scrolling: touch
8.轉發到微信列表的轉發信息卡片圖,iOS當圖片尺寸不對時,會出現空白,安卓會自動截取左上角
9.iOS橡皮筋事件
hack:在page.json文件中
"disableScroll": true
10.iOS短期屢次掃碼進入不會執行onload
11.new number()強制轉換結果爲undefined
hack:用parsefloat
12.iOS圖片加上阿里雲編輯參數加載失敗
Hack:binderror事件中對src從新複製,記得帶上隨機數,否則會由於路徑同樣不請求,有時候不是一次就能從新請求成功的,因此下一次獲取的時候記得去掉隨機數
loadimgerror: function (e) { console.log("圖片加載失敗") this.setData({ Src: e.target.dataset.src.split("?")[0] + '?' + Math.floor(Math.random() * 10 + 1) * 9 }) },