微信授权登录提示code-2
appid和appsecret应该是移动应用,而非网页应用
微信授权登录提示code:-100/自定义基座无法微信登录和分享
开发者账号配置的应用签名应该是md5加密后的值,而不是原字符串
生产环境proxyTable不生效,导致接口500
两种解决办法:
①入口文件使用网络地址,且和接口在同一域名下
②(推荐)
入口文件依旧是index.html
在config/prod.env和config/dev.env下添加API_ROOT
'use strict' module.exports = { NODE_ENV: '"production"', API_ROOT: '"http://cross.precision-wechat.com"' }
在main.js里设置baseUrl
axios.defaults.baseURL = process.env.API_ROOT
css内背景图片使用相对路径,打包测试不出现
修改config/index,js内的这一行
// Paths assetsRoot: path.resolve(__dirname, '../dist'), assetsSubDirectory: 'static', assetsPublicPath: './',
import进来的样式表没有被lib-flexible转为rem
转换写法,改为<style scoped src='../../assets/css/formReset.css'></style>
ApplePay沙盒测试登录app store失败
不能直接登录app store,需要在点击付款时登录沙盒账号
微博分享闪退
Dcloud的锅,在授权失败时授权层会闪现闪退,授权失败有两种情况,1网络问题授权失败2你没安装新浪微博,要再加一层判断,如果授权失败则进行提示。
plus.share.getServices(function(s){ s.forEach(function(item) { if(item.id === 'sinaweibo') { $this.shares = item; } }); if($this.shares.authenticated) { // 已授权 $this.shares.send($this.sinashareMsg, function() { plus.nativeUI.toast($this.langs.SHARE_SUCCESS); }, function(e) { plus.nativeUI.toast($this.langs.SHARE_FAIL); }) }else { // 未授权 $this.shares.authorize(function() { $this.shares.send($this.sinashareMsg, function() { plus.nativeUI.toast($this.langs.SHARE_SUCCESS); }, function(e) { plus.nativeUI.toast($this.langs.SHARE_FAIL); }) }, function(e) { // 授权失败 plus.nativeUI.toast($this.langs.SHARE_FAIL); }) } }, function(e){ plus.nativeUI.toast(e.message); });
IOS真机测试,el-input光标全满,输入时错位
设置line-height=字体大小
iPhone X底部有个安全区,导致fixed+bottom的导航没有保持在最底部
打包后在index.html`
<meta name="viewport" content="width=device-width,initial-scale=1.0">`的content里加一句`viewport-fit=cover`
使用plus.createWebview创建webview打开第三方链接出现的诸多问题
①在打开的连接中执行一段脚本
$this.payw.evalJS(script);
安卓测试无错,iPhone不执行
解决:
将evalJS代码放在loaded里
$this.payw.addEventListener('loaded',function () { $this.payw.evalJS(string); });
②loaded内代码执行了两次,导致页面跳转两次
Dcloud的锅,解决办法:
var isLoaded = false; $this.payw.addEventListener('loaded',function () { if(isLoaded){return true} isLoaded=true; $this.payw.evalJS(string); });
③使用loading监听页面跳转,跳转到执行成功页面即close当前webview,但IOS下监听无效
Dcloud的锅,loading中webview.getUrl获取的永远是上一步的url,而不是当前页面的真正url
一开始想更换loaded,后来发现在IOS上loaded有些webview只执行一次,有些则能每次跳转都执行,不太稳定,最终决定使用progressChanged
解决方案:使用loaded来evalJS,progressChanged来对比地址
var isLoaded = false; payw.addEventListener('loaded',function () { if(isLoaded){return true} isLoaded=true; payw.evalJS(string); }) payw.addEventListener('progressChanged',function () { // 监听是否成功 console.log(payw.getURL()) var callbacklink = payw.getURL().split('?')[0]; // if(callbacklink === successUrl) { // plus.webview.close(payw) // console.log('success'); // } // if(callbacklink === failUrl) { // // 支付失败 // plus.webview.close(payw); // console.log('fail'); // } // if(callbacklink === cancelUrl) { // plus.webview.close(payw) // console.log('cancel'); // } })
④progressChanged也会引发执行多次的问题
可以在判断成功后remove掉事件
$this.fbsharew.addEventListener('progressChanged', handlePChange ); function handlePChange (e) { if($this.fbsharew.getURL().split('?')[0] === finishlink) { $this.fbsharew.removeEventListener('progressChanged', handlePChange ); } }
处理安卓返回键,使返回时关闭所有webview
// 写在mounted内 // 处理安卓返回键问题 plus.key.removeEventListener('backbutton', handleBack ); plus.key.addEventListener('backbutton', handleBack ) function handleBack() { var wvs=plus.webview.all(); for(var i=0;i<wvs.length;i++){ if(wvs[i].getURL() !== plus.webview.currentWebview().getURL()) { plus.webview.close(wvs[i]); $this.switchUrl();// 判断是后退还是回到其他页面的方法 } } }
动态添加的HTML节点如何绑定事件
有这个需求是因为有多语言版本,文本从后台读取。
比如
By creating your account, you agree to the Terms of Use and Privacy Policy of this site.
放在底部,点击其他地方无反应,但点击Terms of Use或者Privacy Policy则要出现条款浮层
解决办法:
后台添加语言仅修改文字,不要删除标签
<p>By creating your account, you agree to the<span data-id="0"> Terms of Use </span>and<span data-id="1"> Privacy Policy </span>of this site.</p>
这段html标签写为:
<div class="terms" @click="popup($event)" v-html="langs.REGISTER_FOOTER"></div>
事件处理:
popup (event) { let id = event.target.getAttribute('data-id') if(id === '0') { console.log('Terms of Use') } if(id === '1') { console.log('Privacy Policy') } }
只有一个点击范围的可以直接使用<span>标签,通过event.target.nodeName来判断
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
本文向大家介绍详解webpack+vue-cli项目打包技巧,包括了详解webpack+vue-cli项目打包技巧的使用技巧和注意事项,需要的朋友参考一下 1.设置config文件夹index.js中productionSourceMap的值为false,也就是设置webpack配置中devtool为false,打包后文件体积可以减少百分之八十!!!!!!! 2.如何实现打包文件中js、css等
本文向大家介绍vue-cli初始化项目中使用less的方法,包括了vue-cli初始化项目中使用less的方法的使用技巧和注意事项,需要的朋友参考一下 什么是less? Less 是一门 CSS 预处理语言,它扩展了 CSS 语言,增加了变量、Mixin、函数等特性,使 CSS 更易维护和扩展。 引言 现在前端的vue框架越来越火,vue-cli作为vue项目的脚手架工具,是我们在开发中最最经常使
本文向大家介绍vue-cli与webpack处理静态资源的方法及webpack打包的坑,包括了vue-cli与webpack处理静态资源的方法及webpack打包的坑的使用技巧和注意事项,需要的朋友参考一下 通过Vue-cli进行webpack打包的坑 Vue-cli为Vue项目搭建的脚手架的确很方便,但打包时容易出现空白页,或者对应的静态资源加载不了。 我是通过将项目/config下的ind
更改历史 * 2017-12-31 胡小根 初始化文档 1 步骤 以下步骤以 Xcode 8.3.1 为例 1.1 生成xcode工程 ionic cordova platform add ios 如下图所示: 1.2 在xcode中登录Apple ID 如下图所示: 1.3 生成CSR文件 1.4 生成Certificate 登录developer.apple.com,生成Ce
本文向大家介绍浅谈vue项目利用Hbuilder打包成APP流程,以及遇到的坑,包括了浅谈vue项目利用Hbuilder打包成APP流程,以及遇到的坑的使用技巧和注意事项,需要的朋友参考一下 1.打包项目 期间遇到的坑,提前说下,避免重复工作。 1.1打包的app出现白屏。 出现原因:路径不对,需要改config\index.js 解决办法:修改打包的路径。 1.2点击页面跳转不了,报 Loadi
本文向大家介绍详解Vue webapp项目通过HBulider打包原生APP,包括了详解Vue webapp项目通过HBulider打包原生APP的使用技巧和注意事项,需要的朋友参考一下 Vue webapp项目通过HBulider打包原生APP 1、webapp项目已经通过vue-cli搭建的脚手架写好了,然后通过webpack打包成一个部署文件list,如下: 2、打开HBulider,打开目