初试vue-cli使用HBuilderx打包app的坑


Posted in Javascript onJuly 17, 2019

微信授权登录提示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来判断

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery 操作option的实现代码
Mar 03 Javascript
select、radio表单回显功能实现避免使用jquery载入赋值
Jun 08 Javascript
再分享70+免费的jquery 图片滑块效果插件和教程
Dec 15 Javascript
浅谈javascript中字符串String与数组Array
Dec 31 Javascript
JS获得选取checkbox整行数据的方法
Jan 28 Javascript
介绍JavaScript的一个微型模版
Jun 24 Javascript
JavaScript对HTML DOM使用EventListener进行操作
Oct 21 Javascript
WebGL利用FBO完成立方体贴图效果完整实例(附demo源码下载)
Jan 26 Javascript
Angular2进阶之如何避免Dom误区
Apr 02 Javascript
使用sessionStorage解决vuex在页面刷新后数据被清除的问题
Apr 13 Javascript
js模拟实现烟花特效
Mar 10 Javascript
原生js实现ajax请求和JSONP跨域请求操作示例
Mar 14 Javascript
移动端吸顶fixbar的解决方案详解
Jul 17 #Javascript
基于webpack4+vue-cli3项目实现换肤功能
Jul 17 #Javascript
js getBoundingClientRect使用方法详解
Jul 17 #Javascript
深入了解Hybrid App技术的相关知识
Jul 17 #Javascript
Vue发布项目实例讲解
Jul 17 #Javascript
Vue项目实现简单的权限控制管理功能
Jul 17 #Javascript
百度小程序自定义通用toast组件
Jul 17 #Javascript
You might like
C# WinForm中实现快捷键自定义设置实例
2015/01/23 PHP
Zend Framework实现多文件上传功能实例
2016/03/21 PHP
ExtJS 简介 让你知道extjs是什么
2008/12/29 Javascript
jQuery初学:find()方法及children方法的区别分析
2011/01/31 Javascript
javascript中取前n天日期的两种方法分享
2014/01/26 Javascript
JavaScript中统计Textarea字数并提示还能输入的字符
2014/06/10 Javascript
thinkjs之页面跳转同步异步操作
2017/02/05 Javascript
vue子组件使用自定义事件向父组件传递数据
2017/05/27 Javascript
详解vue.js移动端导航navigationbar的封装
2017/07/05 Javascript
JS实现提交表单前的数字及邮箱校检功能
2017/11/13 Javascript
浅谈vue,angular,react数据双向绑定原理分析
2017/11/28 Javascript
vue内置组件transition简单原理图文详解(小结)
2018/07/12 Javascript
JS中注入eval, Function等系统函数截获动态代码
2019/04/03 Javascript
python局部赋值的规则
2013/03/07 Python
初学Python函数的笔记整理
2015/04/07 Python
Python连接PostgreSQL数据库的方法
2016/11/28 Python
python flask实现分页效果
2017/06/27 Python
python 自动去除空行的实例
2018/07/24 Python
python实现连连看辅助(图像识别)
2020/03/25 Python
python 解决print数组/矩阵无法完整输出的问题
2020/02/19 Python
pytorch实现保证每次运行使用的随机数都相同
2020/02/20 Python
15行Python代码实现免费发送手机短信推送消息功能
2020/02/27 Python
python mysql自增字段AUTO_INCREMENT值的修改方式
2020/05/18 Python
Python实现将元组中的元素作为参数传入函数的操作
2020/06/05 Python
Canvas 文本转粒子效果的实现代码
2019/02/14 HTML / CSS
万得城电器土耳其网站:欧洲第一大电子产品零售商
2016/10/07 全球购物
和平主题的演讲稿
2014/01/12 职场文书
水果连锁超市创业计划书
2014/01/24 职场文书
庆中秋节主题活动方案
2014/02/03 职场文书
校长创先争优承诺书
2014/08/30 职场文书
企业委托书范本
2014/09/13 职场文书
预备党员转正材料
2014/12/19 职场文书
2015年教师党员公开承诺书
2015/01/22 职场文书
介绍信模板
2015/01/31 职场文书
2015年科研工作总结范文
2015/05/13 职场文书
python数据处理之Pandas类型转换
2022/04/28 Python