- WKWebview下使用history模式的单页应用无法正确调用 JSSDK
最近在 iOS 10.2.1 微信 6.5.5 版的 WKWebview 中调试一个单页应用时,发现 url 切换后修改分享信息的调用(例如 wx.onMenuShareTimeline)就会失效,而在 UIWebView 中则是正常的。 该单页应用使用的是 React-Router 3.x 的 history 模式,即不使用 hash 的模式。 发现问题后,尝试在每次 url 切换并调用 wx.onMenuShareTimeline 前先调用 wx.config 重新认证(原本是不需要这个步骤的),发现都会报 invalid signature 的错误,猜测调用 wx.onMenuShareTimeline 也是因为这个原因。 随后在iOS WKWebview 网页开发适配指南中找到如下建议: iOS微信6.5.1,WKWebview在此版本中已知有以下问题:页面使用HTML5的History API pushState; popstate; replaceState等控制页面导航(典型的如单应用页面),同时使用JSSDK的wx.config为jsapi授权,此时大几率会出现jsapi因为无权限而调用失败的问题。 在6.5.1中页面若可能的情况下,可使用Anchor hash技术替换History技术来解决此问题。 iOS微信6.5.2及其之后版本,将不会存在以上问题,但不能100%确认有使用到 history或hash技术更改页面导航地址的页面完全没有此类问题,依然需要开发者注意关注此类问题。 但是我现在手头的微信版本已经为 6.5.5,理论上不存在此问题。 不知道下个版本是否会修复此问题?
2017-03-16 - input聚焦时改变位置光标和占位文字残留在原位
wxml [代码]<[代码][代码]view[代码] [代码]class[代码][代码]=[代码][代码]"test"[代码][代码]>[代码][代码] [代码][代码]<[代码][代码]view[代码] [代码]class[代码][代码]=[代码][代码]"header {{focused ? 'focused' : ''}}"[代码][代码]>[代码][代码] [代码][代码]<[代码][代码]input[代码] [代码]placeholder[代码][代码]=[代码][代码]"输入框"[代码] [代码]bindfocus[代码][代码]=[代码][代码]"focusHandler"[代码] [代码]bindblur[代码][代码]=[代码][代码]"blurHandler"[代码][代码]/>[代码][代码] [代码][代码]</[代码][代码]view[代码][代码]>[代码][代码]</[代码][代码]view[代码][代码]>[代码]wxss [代码]page {[代码][代码] [代码][代码]height[代码][代码]: [代码][代码]100%[代码][代码];[代码][代码]}[代码] [代码].test {[代码][代码] [代码][代码]height[代码][代码]: [代码][代码]100%[代码][代码];[代码][代码]}[代码] [代码].header {[代码][代码] [代码][代码]padding[代码][代码]: [代码][代码]50[代码][代码]rpx;[代码][代码] [代码][代码]background-color[代码][代码]: [代码][代码]#ccc[代码][代码];[代码][代码] [代码][代码]transition: padding [代码][代码]0.3[代码][代码]s ease;[代码][代码]}[代码] [代码].header.focused {[代码][代码] [代码][代码]padding[代码][代码]: [代码][代码]0[代码] [代码]50[代码][代码]rpx;[代码][代码]}[代码]js [代码]Page({[代码][代码] [代码][代码]data: {[代码][代码] [代码][代码]focused: [代码][代码]false[代码][代码] [代码][代码]},[代码] [代码] [代码][代码]focusHandler() {[代码][代码] [代码][代码]this[代码][代码].setData({[代码][代码] [代码][代码]focused: [代码][代码]true[代码][代码] [代码][代码]});[代码][代码] [代码][代码]},[代码] [代码] [代码][代码]blurHandler() {[代码][代码] [代码][代码]this[代码][代码].setData({[代码][代码] [代码][代码]focused: [代码][代码]false[代码][代码] [代码][代码]});[代码][代码] [代码][代码]}[代码][代码]});[代码]必须使用 transition 才能重现这个 bug。 iOS 和 Android 真机均可重现,模拟器中无法重现。 [图片]
2016-11-17 - iOS 下 scroll-view 嵌套在 flex box 中无法滚动到底
机型:iPhone 6S 操作系统:iOS 10.1.1 是否必现:是 wxml [代码]<[代码][代码]view[代码] [代码]class[代码][代码]=[代码][代码]"test"[代码][代码]>[代码][代码] [代码][代码]<[代码][代码]view[代码] [代码]class[代码][代码]=[代码][代码]"header"[代码][代码]>[代码][代码] [代码][代码]Header[代码][代码] [代码][代码]</[代码][代码]view[代码][代码]>[代码][代码] [代码][代码]<[代码][代码]scroll-view[代码] [代码]scroll-y[代码][代码]=[代码][代码]"ture"[代码] [代码]class[代码][代码]=[代码][代码]"scroller"[代码][代码]>[代码][代码] [代码][代码]<[代码][代码]view[代码] [代码]wx:for[代码][代码]=[代码][代码]"{{[1,2,3,4,5]}}"[代码] [代码]class[代码][代码]=[代码][代码]"item"[代码][代码]>[代码][代码] [代码][代码]{{item}}[代码][代码] [代码][代码]</[代码][代码]view[代码][代码]>[代码][代码] [代码][代码]</[代码][代码]scroll-view[代码][代码]>[代码][代码]</[代码][代码]view[代码][代码]>[代码] wxss [代码]page {[代码][代码] [代码][代码]height[代码][代码]: [代码][代码]100%[代码][代码];[代码][代码]}[代码] [代码].test {[代码][代码] [代码][代码]display[代码][代码]: flex;[代码][代码] [代码][代码]flex-[代码][代码]direction[代码][代码]: column;[代码][代码] [代码][代码]height[代码][代码]: [代码][代码]100%[代码][代码];[代码][代码]}[代码] [代码].header {[代码][代码] [代码][代码]background-color[代码][代码]: [代码][代码]#eee[代码][代码];[代码][代码] [代码][代码]padding[代码][代码]: [代码][代码]50[代码][代码]rpx;[代码][代码] [代码][代码]flex: [代码][代码]none[代码][代码];[代码][代码]}[代码] [代码].scroller {[代码][代码] [代码][代码]flex: [代码][代码]1[代码][代码];[代码][代码] [代码][代码]overflow[代码][代码]: [代码][代码]auto[代码][代码];[代码][代码]}[代码] [代码].item {[代码][代码] [代码][代码]height[代码][代码]: [代码][代码]600[代码][代码]rpx;[代码][代码] [代码][代码]background-color[代码][代码]: [代码][代码]#ccc[代码][代码];[代码][代码] [代码][代码]border-bottom[代码][代码]: [代码][代码]2px[代码] [代码]solid[代码] [代码]red[代码][代码];[代码][代码]}[代码] 在 iOS 下,一直往下滑动时看不到 5 这个 block 底部的红色 border,必须很快速地多次往下滑动才能瞟见,放手即回到原位。 如果使用普通的 view 则正常显示,但是那样的话滑动就不顺畅。 Android 下正常。
2016-11-14