H5嵌入到APP,不仅在ios和安卓上有兼容性,在ios上因为版本也会有兼容性,因此遇到了不少坑;功能点也比较多,借助了插件来实现
使用Page Visibility 监听页面是否处于激活(可见)状态
应用在当某个页面处于激活状态时,执行一些操作,或者是数据需要更新,重新请求接口1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38# 当页面处于激活时刷新页面
Listener(){
var hidden = "hidden";
var that = this;
# 各个浏览器属性兼容
if (hidden in document)
document.addEventListener("visibilitychange", onchange);
else if ((hidden = "mozHidden") in document)
document.addEventListener("mozvisibilitychange", onchange);
else if ((hidden = "webkitHidden") in document)
document.addEventListener("webkitvisibilitychange", onchange);
else if ((hidden = "msHidden") in document)
document.addEventListener("msvisibilitychange", onchange);
else if ("onfocusin" in document)
document.onfocusin = document.onfocusout = onchange;
else
window.onpageshow = window.onpagehide = window.onfocus = window.onblur = onchange;
# 主要功能代码
# 网页状态改变事件
function onchange(evt) {
if(document[hidden]){
document.title = "普洱茶";
}else{
document.title = "普洱茶";
that.getCart();
that.loadAjax(1);
that.indexmode();
}
}
if (document[hidden] !== undefined)
onchange({
type: document[hidden] ? "blur" : "focus"
});
},
vue使用echarts
1 | # 使用npm安装vue 在项目目录下执行 |
使用PinchZoom实现swiper轮播图片的两指缩放
可以参考 http://manuelstofer.github.io/pinchzoom/1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24# PinchZoom 可能依赖固定的jQuery版本 所以使用js引入
<script src="http://mat1.gtimg.com/city/youpin/yn/hyBase.js"></script>
<script src="http://www.ihuyue.cn/2018Yeartest/test/zoom.js"></script>
# 引入swiper
var Swiper = require('swiper/dist/js/swiper.min.js');
# 定义轮播图的固定页
var index = index || 0;
window.swiper = new Swiper('.swiper-container-quality', {
autoplay: false,
loop: false,
pagination: '.swiper-pagination-quality',
# 点击展示轮播图的某一张
initialSlide: index
});
$(function () {
# 使用 html在img元素外包一层.zoom-container
$('.quality-detail-box .zoom-container').each(function () {
new RTP.PinchZoom($(this), {});
});
setTimeout(function () {
$('.pinch-zoom-container').height('100%');
}, 0)
});
下拉刷新,展示json文件的动画
1 | # 加载动画 使用BodyMovin实现json动画 |
小知识
- 一个项目中全局同时使用zepto 和 jquery 会冲,事件 tap 跟 click 、touchstart可能都会有问题 如果是移动端使用zepto尽量是tap事件
- 引入的轮播图swiper插件,与首页的下拉刷新冲突,当下拉的时候该轮播图数据会刷新,这时候轮播图的播放就会乱,要重置轮播图,在刷新的时候可以将该轮播图数据置空,数据请求成功后在初始化轮播图
- 在安卓手机上设置line-height可能不会居中,解决:使用js判断是ios还是安卓,分别写样式
- vue渲染的数据,如果用jq操作dom,可能触发事件的时候找不到改元素,这时候元素可能还没渲染成功,需要在接口请求成功后再执行对应渲染数据的方法,可以将方法放在setTimeOut里执行
- input调起数字键盘 < input type=”number” pattern=”\d*”> 安卓手机可以切换 :android 数字键盘本就带这些按钮,js是不能控制键盘上显示什么内容的,只能通过正则表达式或自己的方法来实现输入的内容
- 让textarea文本域的高度根据内容自适应:写一个div,让该div的样式跟文本域的一样,然后实时的把textarea的内容赋值给div,获取div的高赋值给textarea,div需要隐藏在textarea下面
- Html页面纯数字或者纯字母不能换行的解决办法:在HTML中标签中的数字和字母默认是不换行的,如果要将他们换行,需要设置CSS属性: word-break:break-all;word-wrap:break-word;