水印组件遮住了吧 还不给滚动
页面添加水印后导致scroll-view滚动实效,该怎么处理?水印代码 watermark.wxss <canvas type="2d" id="watermarkCanvas" style="position:absolute; top:0; left:0; width:100%; height:100%; pointer-events:none; z-index:1;" disable-scroll ></canvas> 页面代码 match.wxss <watermark id="globalWatermark" /> <view class="title">......</view> <scroll-view class="scroll-y" type="list" scroll-y> ...... </scroll-view> 整个页面可以点击并且上下滑动,scroll-view里面的按钮也能正常点击,就是这个scroll-view不能上下滑动了
04-17您的代码几年没更新了,你再迟点开发,怕是整个应用都要重构
调用uni.getUserProfile没有弹出授权接口 ?[图片][图片] 我在调用uni.getUserProfile接口时 他没有给我弹出授权窗口 直接执行了成功并在终端打印 但答应结果中并没有我的用户信息,而是虚拟用户信息
04-17没用的,我反馈过无数次了解决率很低
指南文档中链接失效文档:https://developers.weixin.qq.com/miniprogram/dev/framework/runtime/skyline/features.html 异常链接所在文本:同层渲染的原理 异常链接:https://developers.weixin.qq.com/community/develop/article/doc/000c4e433707c072c1793e56f5c813
04-17做个H5,接入jsSDK,用app-launch组件,根据扫码后socket连接来识别扫码的来源
有没有什么办法可以扫码后根据某些动态条件选择打开不同的小程序?我们有多个小程序,希望能够通过一个二维码来分辨用户需要跳转哪个具体小程序,跳转规则希望可以后台动态修改无需调整二维码
04-17域名问题100% 别问为啥 去看就行
如何解决小程序体验版使用调试模式时正常,非调试模式以及线上版本无响应的问题?无
03-19自己抓公众号文章,然后用无头浏览器解析重新生成文章
web-view有没有什么办法显示别人的公众号文章?没办法后台配置业务域名,毕竟不能登陆别人的服务器<web-view src="https://mp.weixin.qq.com/s/ENtidPPiF5u_fq4BTBHpWA"></web-view>
02-21开发者工具的问题,不管就行
纯新手,想请问一下这个渲染层错误是什么问题?(刚创建的js模板就有这个问题)[图片][图片]
2024-12-17这里需要注意 你的所有节点都要加载完成,对时机要求很高,如果你的子节点都是动态获取接口的,最好监听子组件加载完成,再去设置滚动节点的id,之前踩过坑。
scroll-view中的属性scroll-into-view失效?<scroll-view scroll-y scroll-with-animation class="scroll-view scroll-view-content" @scroll="viewScroll" :scroll-top='scrollTop' :scroll-into-view="scrollIntoViewId" enable-passive > ... <component @changeTab="changeTab"> <view :id="scrollIntoViewId"></view> </component> </scroll-view> ... <script> data() { return { ... scrollIntoViewId: "", }; }, methods:{ changeTab(value) { this.scrollIntoViewId = value;//另一个页面通过$emit传过来的值,可以取到 }, } </script>
2024-12-10刺激不,小程序一年不开发,包你懵逼。一个用户头像昵称改了一百八十遍api,然后隐私协议+弹窗又搞了一百八十遍,后面订单又要求上传订单页面路径,用个定位要申请,申请完了还要写到隐私协议,这些都不致命,致命的是你不知道在哪看文档 [dog],后面有要求短链URL schema 一人一链,第一个人访问过就会过期,又要去整改,等你改完,又发公告说一人一链取消,我们又可以用啦,哦耶,天才。
getUserProfile()获取用户信息授权后还是获取不到真实信息?在getUserProfile方法中获取到的信息还是虚拟的,是因为在模拟测试的原因吗,头像和微信名称获取不到当前账号的信息。 wxml文件: <view class="container"> <block wx:if="{{isLoggedIn}}"> <view class="user-info"> <image src="{{userInfo.avatar_url}}" class="avatar"></image> <text class="nickname">{{userInfo.nickname}}</text> <text class="user-id">我的ID: {{userInfo.id}}</text> </view> <view class="partner-info" wx:if="{{partnerInfo}}"> <text class="section-title">我的伴侣</text> <view class="partner-detail"> <image src="{{partnerInfo.avatar_url}}" class="partner-avatar"></image> <text class="partner-name">{{partnerInfo.nickname}}</text> </view> </view> <view class="action-buttons"> <button class="btn" wx:if="{{!partnerInfo}}" bindtap="bindPartner">绑定伴侣</button> <button class="btn logout" bindtap="logout">退出登录</button> </view> </block> <block wx:else> <view class="login-container"> <image src="/images/logo.png" class="logo" mode="aspectFit"></image> <text class="welcome-text">欢迎使用愿望池</text> <button wx:if="{{canIUseGetUserProfile}}" class="btn login" bindtap="getUserProfile" >微信登录</button> <button wx:else class="btn login" open-type="getUserInfo" bindgetuserinfo="onGetUserInfo" >微信登录</button> </view> </block> </view> js文件: const app = getApp(); const baseUrl = 'http://172.222.3.74:8083'; // 封装请求方法 const request = { post: (url, data, token = '') => { return new Promise((resolve, reject) => { wx.request({ url: `${baseUrl}${url}`, method: 'POST', header: token ? { 'Authorization': `Bearer ${token}` } : {}, data, success: (res) => resolve(res), fail: (err) => reject(err) }); }); }, get: (url, token) => { return new Promise((resolve, reject) => { wx.request({ url: `${baseUrl}${url}`, header: { 'Authorization': `Bearer ${token}` }, success: (res) => resolve(res), fail: (err) => reject(err) }); }); }, put: (url, data, token) => { return new Promise((resolve, reject) => { wx.request({ url: `${baseUrl}${url}`, method: 'PUT', header: { 'Authorization': `Bearer ${token}` }, data, success: (res) => resolve(res), fail: (err) => reject(err) }); }); } }; Page({ data: { isLoggedIn: false, userInfo: null, partnerInfo: null, token: '' }, onLoad: function() { this.checkLoginStatus(); }, // 检查登录状态 checkLoginStatus: async function() { const token = wx.getStorageSync('token'); const userInfo = wx.getStorageSync('userInfo'); //判断token和userInfo是否已经获取到 if (token && userInfo) { this.setData({ isLoggedIn: true, userInfo, token }); await this.getPartnerInfo(); return; } // 检查是否支持 getUserProfile if (wx.getUserProfile) { this.setData({ canIUseGetUserProfile: true }); } }, // 使用 getUserProfile 获取用户信息 getUserProfile: function() { wx.getUserProfile({ desc: '用于完善会员资料', lang: 'zh_CN', success: async (userInfoResult) => { try { // 获取 code const loginResult = await wx.login(); if (!loginResult.code) { throw new Error('获取用户code失败'); } console.log("用户信息:", userInfoResult); // 调用服务端获取 token 接口 const codeRes = await request.post('/users/developer/code', { code: loginResult.code }); if (codeRes.statusCode !== 200 || !codeRes.data.token) { throw new Error('获取token失败'); } const token = codeRes.data.token; // 获取手机号加密值 const phoneRes = await wx.getPhoneNumber({ success: (phoneInfo) => phoneInfo, fail: () => { throw new Error('获取手机号失败'); } }); // 调用服务端登录接口 const loginRes = await request.post('/users/developer/login', { token, userInfo: { nickName: userInfoResult.userInfo.nickName, avatarUrl: userInfoResult.userInfo.avatarUrl, gender: userInfoResult.userInfo.gender, country: userInfoResult.userInfo.country, province: userInfoResult.userInfo.province, city: userInfoResult.userInfo.city, language: userInfoResult.userInfo.language }, rawData: userInfoResult.rawData, signature: userInfoResult.signature, encryptedData: userInfoResult.encryptedData, iv: userInfoResult.iv, phoneEncryptedData: phoneRes.encryptedData, phoneIv: phoneRes.iv }); if (loginRes.statusCode === 200 && loginRes.data) { this.handleLoginSuccess({ token: loginRes.data.token, userInfo: loginRes.data.userInfo }); } else { throw new Error('登录失败'); } } catch (error) { console.error('登录失败:', error); wx.showToast({ title: error.message || '登录失败', icon: 'none' }); } }, fail: (error) => { console.error('获取用户信息失败:', error); wx.showToast({ title: '获取用户信息失败', icon: 'none' }); } }); }, // 处理用户信息授权(兼容旧版本) onGetUserInfo: function(e) { if (e.detail.userInfo) { this.login(e.detail.userInfo); } else { wx.showToast({ title: '需要授权才能使用', icon: 'none' }); } }, // 登录流程 login: async function(userInfo) { try { const { code } = await wx.login(); if (!code) { throw new Error('获取用户code失败'); } const loginRes = await request.post('/users/developer/login', { code, userInfo }); if (loginRes.statusCode === 200 && loginRes.data) { this.handleLoginSuccess({ token: loginRes.data.token, userInfo: loginRes.data.userInfo }); } else { throw new Error('登录失败'); } } catch (error) { console.error('登录失败:', error); wx.showToast({ title: error.message || '登录失败', icon: 'none' }); } }, // 处理登录成功 handleLoginSuccess: function(data) { wx.setStorageSync('token', data.token); wx.setStorageSync('userInfo', data.userInfo); this.setData({ isLoggedIn: true, userInfo: data.userInfo, token: data.token }); this.getPartnerInfo(); }, // 获取伴侣信息 getPartnerInfo: async function() { if (!this.data.userInfo?.partnerId) return; try { const res = await request.get( `/users/${this.data.userInfo.partner_id}`, this.data.token ); this.setData({ partnerInfo: res.data }); } catch (error) { console.error('获取伴侣信息失败:', error); } }, // 退出登录 logout: function() { wx.removeStorageSync('token'); wx.removeStorageSync('userInfo'); this.setData({ isLoggedIn: false, userInfo: null, partnerInfo: null, token: '' }); }, // 绑定伴侣 bindPartner: async function() { try { const res = await new Promise((resolve) => { wx.showModal({ title: '绑定伴侣', content: '请输入伴侣ID', editable: true, success: (res) => resolve(res) }); }); if (!res.confirm || !res.content) return; const updateRes = await request.put( `/users/${this.data.userInfo.id}`, { partner_id: res.content }, this.data.token ); if (updateRes.data) { wx.showToast({ title: '绑定成功', icon: 'success' }); this.setData({ userInfo: updateRes.data }); wx.setStorageSync('userInfo', updateRes.data); await this.getPartnerInfo(); } else { throw new Error('绑定失败'); } } catch (error) { console.error('绑定伴侣失败:', error); wx.showToast({ title: error.message || '绑定失败', icon: 'none' }); } } });
2024-12-09腾讯以外的不支持,腾讯以内的部分支持
用户上传的图片长按识别二维码有的识别,有的不识别,是有什么要求限制吗?[图片][图片][图片][图片]
2024-12-09