audio音频

写了一个有音频的页面 发现了几个问题:

音频在各个浏览器里获取 duration 总时间 currentTime 时长 uc浏览器里获取不到 而手机自带的浏览器可以获取到。

1:自动播放音乐在手机浏览器里不能自动播放,原因是 浏览器禁止了音乐在刚进页面中自动播放来浪费用户的流量,自动播放还和浏览器的版本有关系 qq浏览器是可以自动播放的,

Window.onload = function(){

audio.play();//音乐播放也不行

}

canplay事件也不行,代码模拟点击事件也不行

有一种办法能自动播放用ajax请求 拿到音频 存到缓存中 可以解决浏览器自动播放,但是缓存播放 点击播放不冲突,缓存在播放 点击播放也在播放,还有播放音乐时间在走也是问题,

放到缓存里代码如下:

window.addEventListener('load', function () {

var audioCtx = new (window.AudioContext || window.webkitAudioContext)();

var source = audioCtx.createBufferSource();

var xhr = new XMLHttpRequest();

xhr.open('GET', 'audio-autoplay.wav');

xhr.responseType = 'arraybuffer';

xhr.addEventListener('load', function (r) {

console.log(xhr.response);

audioCtx.decodeAudioData(

xhr.response, 

function (buffer) {

source.buffer = buffer;

source.connect(audioCtx.destination);

source.loop = false;

});

playsound();

});

xhr.send();

var playsound = function () {

source.start(0);

};

});

参考地址如下:https://xenos.reinom.com/audio-autoplay.html

2: 音频在页面中获取时长 和总长时 uc浏览器获取不到总时间为0,手机自带浏览器获取总时间会很慢  不管用setInterval 还是定时器 setTImeout 都一样,除非用事件点击事件后获取是可以的,

3: uc mini浏览器不能全屏 原因在:浏览器头部的导航条占据了页面一部分,所以真正页面会少一部分所以页面会撑长 不会全屏,自己试过一个div在页面顶部 一个div在页面底部 。庆幸的是国内 uc mini浏览器不开发

4:facebook分享如果用网页分享meta标签开发图谱写分享 不能自定义用js设置url images title descripti 因为facebook的网络爬虫是在服务端返回浏览器最初的html里爬虫 

页面访问流程:

浏览器出入网址 —>三次握手与服务端通信 (查询ip解析主机站点资源封装成http返回给浏览器) 四个握手 浏览器分析responesehtml(这个html是最初的没有css js 修饰)(网络爬虫也是在这个阶段读取页面元素)—>浏览器接受到responese拿到html 接下来会解析css js 最终渲染页面 展示出来

一个图片解释了页面访问流程链接如下:

file:///Users/demo/Desktop/Jon%20Han/网页请求流程图片/20151010124247204

 

做元旦活动页面遇到的坑:

1:音频不能在浏览器里自动播放

2:uc mini浏览器不能全屏

3:facebook用网页分享meta标签开发图谱 网络爬虫不能用js设置url images

 

Trident 是 ie

Gecko 是 firefox netscape6-9

Webkit 是 safai chrome

Presto 是 opera

手机自带浏览器内核 webkit (chrome)

Qq9.0浏览器用的是IE Webkit chrome 兼容性好

uc浏览器内核是:webkit(chrome)

浏览器内核检测链接:https://ie.icoa.cn

 

1: 引入字体:如果设计师给的字体没有再如果字体在手机上不是通用,在手机有这个字体包样式就是好的,但如果没有那就是不好,引入字体包是解决办法:
iconfont里有字体包,链接如下:

http://iconfont.cn/webfont/?spm=a313x.7781069.1998910419.d81ec59f2#!/webfont/index

有字库里有字体包,链接如下:
https://www.youziku.com

 

2: 判读各个国家的语言,在各个国家展示不一样的样式:解决办法是:

用系统语言判断:navigator.language;

代码如下:

function getLanguage(){

let language = navigator.language;

if( language.indexOf(‘en’) > -1){

 

}

}

各国系统语言可以在i80N查

链接如下:http://domokun.cc/article/2017-03/9.html

如果国家有特殊化也可以用时区去判断但没有系统语言判断好

 

css写js,js变量css可以获取

以前的 expression但是现在已经废弃

2017年的css也可以定义变量和sass less的语法也快相近了

 

4:  javascript于css通信

        设置变量

Document.body.style.setProperty(‘—primary’,’—#f00’);

读取变量

document.body.style.getPropertyValue(‘—primary’).trim();

删除变量

Document.body.style.removeProperty(‘—primary’)

var() 函数读取变量;

参考地址:http://www.ruanyifeng.com/blog/2017/05/css-variables.html

 

5: 反省,以后做项目我会主要问几个问题:

(1):项目在那个app里展示兼容app是否还有浏览器?

(2):用运营页面还是backbone页面?

(3):页面逻辑 调用接口 和 谁连调 接口调用 

(4):页面埋点  

原文地址:https://www.cnblogs.com/hjpqwer/p/8371666.html