微信授權后還能通過瀏覽器返回鍵回到授權頁
在導航守衛中可以在 next({}) 中設置 replace: true 來重定向到改路由,跟 router.replace() 相同
router.beforeEach((to, from, next) => { if (getToken()) { ... } else { // 儲存進來的地址,供授權后跳回 setUrl(to.fullPath) next({ path: '/author', replace: true }) }})路由切換時頁面不會自動回到頂部
const router = new VueRouter({ routes: [...], scrollBehavior (to, from, savedPosition) { return new Promise((resolve, reject) => { setTimeout(() => { resolve({ x: 0, y: 0 }) }, 0) }) }})ios系統在微信瀏覽器input失去焦點后頁面不會自動回彈
初始的解決方案是input上綁定 onblur 事件,缺點是要綁定多次,且有的input存在于第三方組件中,無法綁定事件。
后來的解決方案是全局綁定 focusin 事件,因為 focusin 事件可以冒泡,被最外層的body捕獲。
util.wxNoScroll = function() { let myFunction let isWXAndIos = isWeiXinAndIos() if (isWXAndIos) { document.body.addEventListener('focusin', () => { clearTimeout(myFunction) }) document.body.addEventListener('focusout', () => { clearTimeout(myFunction) myFunction = setTimeout(function() { window.scrollTo({top: 0, left: 0, behavior: 'smooth'}) }, 200) }) } function isWeiXinAndIos () { let ua = '' + window.navigator.userAgent.toLowerCase() let isWeixin = /MicroMessenger/i.test(ua) let isIos = //(i[^;]+;( U;)? CPU.+Mac OS X/i.test(ua) return isWeixin && isIos }}在子組件中修改父組件傳遞的值時會報錯
vue中的props是單向綁定的,但如果props的類型為數組或者對象時,在子組件內部改變props的值控制臺不會警告。因為數組或對象是地址引用,但官方不建議在子組件內改變父組件的值,這違反了vue中props單向綁定的思想。所以需要在改變props值的時候使用 $emit ,更簡單的方法是使用 .sync 修飾符。
// 在子組件中this.$emit('update:title', newTitle)//在父組件中<text-document :title.sync="doc.title"></text-document>使用微信JS-SDK上傳圖片接口的處理首先調用 wx.chooseImage() ,引導用戶拍照或從手機相冊中選圖。成功會拿到圖片的 localId ,再調用 wx.uploadImage() 將本地圖片暫存到微信服務器上并返回圖片的服務器端ID,再請求后端的上傳接口最后拿到圖片的服務器地址。
chooseImage(photoMustTake) { return new Promise(resolve => { var sourceType = (photoMustTake && photoMustTake == 1) ? ['camera'] : ['album', 'camera'] wx.chooseImage({ count: 1, // 默認9 sizeType: ['original', 'compressed'], // 可以指定是原圖還是壓縮圖,默認二者都有 sourceType: sourceType, // 可以指定來源是相冊還是相機,默認二者都有 success: function (res) { // 返回選定照片的本地ID列表,localId可以作為img標簽的src屬性顯示圖片 wx.uploadImage({ localId: res.localIds[0], isShowProgressTips: 1, success: function (upRes) { const formdata={mediaId:upRes.serverId} uploadImageByWx(qs.stringify(formdata)).then(osRes => { resolve(osRes.data) }) }, fail: function (res) { // alert(JSON.stringify(res)); } }); } }); })}
新聞熱點
疑難解答
圖片精選