//--建立触摸监听,当浏览器打开页面时,触摸屏幕触发事件,进行音频播放
document.addEventListener('touchstart', function () {
var audio = document.getElementById('audio');
audio.play();
});
复制代码
var clickAudio = null;
// 播放点击音效
function playClickMusic() {
if (!clickAudio) {
clickAudio = $('#click')[0];
}
clickAudio.load();
clickAudio.play();
}
复制代码
var flag = false;
$('#id').on({
'compositionstart': function() {
flag = true;
},
'compositionend': function() {
flag = false;
if(!flag) {
//do something...
doSomethingFunction();
}
},
'input propertychange': function() {
if(!flag) {
//do something...
doSomethingFunction();
}
}
});
复制代码
<video src="" webkit-playsinline playsinline x5-playsinline></video>
复制代码
注:x5内核-安卓下不能添加airplay="allow" x5-video-player-fullscreen="true" x-webkit-airplay="allow"(添加了以后playsinline属性就失效了)css
x5内核video api:腾讯x5内核api文档中的video部分html
一、若视频是MP4格式则必须是h264编码
二、视频资源必须支持分片传输(非分片传输的话在safari中不能播放)ios
视频文件分片传输参考:nginx文件分片传输配置nginx
click事件有延迟(缘由:客户端浏览器通常双击可放大页面,浏览器在检测到第一次click事件时不会立刻触发,通常会等到300ms后无下一次click事件后才会触发click事件)
解决方案:fastclickweb
微信下长按保存图片(微信下不支持经过为a标签添加download属性直接下载图片)
解决方案:先用html2canvas将dom绘制在canvas上,而后使用绝对定位将图片放置在某个按钮之上(设置图片opacity:0.01,让图片看不见),而后触发上下文菜单供用户保存图片;canvas
html2canvas使用注意事项:
一、不可以绘制display:none或者经过position移出显示区的dom,可是能够绘制z-index:-1的dom,详见html2canvas踩坑记
二、 图片模糊解决方案:先根据devicePixelRatio(设备像素比)放大canvas,关闭抗锯齿,而后在放大的canvas上绘制;以后将canvas转成base64图片放在原始大小的img上;api
// 长按保存示例代码
// 注:生成的图片需提早设置下opacity:0.01
// html2canvas要注意版本,不一样版本api可能不一样,此处使用的是0.5.0-beta3版本
var cntElem = $('.share-page')[0];
var shareContent = cntElem; //须要截图的包裹的(原生的)DOM 对象
var width = shareContent.offsetWidth; //获取dom 宽度
var height = shareContent.offsetHeight; //获取dom 高度
var canvas = document.createElement("canvas"); //建立一个canvas节点
var scale = window.devicePixelRatio; //定义任意放大倍数 支持小数
canvas.width = width * scale; //定义canvas 宽度 * 缩放
canvas.height = height * scale; //定义canvas高度 *缩放
canvas.getContext("2d").scale(scale, scale); //获取context,设置scale
var opts = {
scale: scale, // 添加的scale 参数
canvas: canvas, //自定义 canvas
// logging: true, //日志开关,便于查看html2canvas的内部执行流程
width: width, //dom 原始宽度
height: height,
useCORS: true //容许跨域
};
html2canvas(shareContent, opts).then(function (canvas) {
var context = canvas.getContext('2d');
// 【重要】关闭抗锯齿
context.mozImageSmoothingEnabled = false;
context.webkitImageSmoothingEnabled = false;
context.msImageSmoothingEnabled = false;
context.imageSmoothingEnabled = false;
var imgURL = canvas.toDataURL("image/png");
var $img = $('<img src=' + imgURL + '>').css({
width: canvas.width / scale + 'px',
height: canvas.height / scale + 'px'
});
// 安卓下绑定长按保存图片事件
bindLongTouchSave($img);
// 这里的.btn.save就是长按保存按钮
$('.btn.save').append($img);
});
复制代码
visibilityChange(在早期浏览器里须要加浏览器前缀),微信也支持此事件(经过window.hidden判断当前页面状态);qq中一样功能的事件是qbrowserVisibilityChange(经过e.hidden判断当前页面状态)跨域
好啦,此次先总结这么多,之后等遇到了再继续总结,兼容性问题真的是移动端开发人员的一个大坑哈,O(∩_∩)O哈哈~浏览器