2020-08-05 题目来源:http://www.h-camel.com/index.html
[html] 在H5中如何预加载音频?
H5新增Audio对象,移动端h5的实现可以参考 https://www.cnblogs.com/leinov/p/3896772.html
最简单:<audio id="myAudio" src="img/RiverFlowsInYou.mp3" autoplay controls loop></audio>
//自动播放,显示控件,循环播放
或者: <audio id="myAudio" autoplay controls loop> <source src="img/f.mp3" type="audio/mpeg"> </audio>
let obj = document.getElementById("myAudio");
obj.play(); // 播放
obj.pause(); // 暂停
[css] margin属性的负值 在inline-block元素下是如何表现的?
可以参考:https://blog.csdn.net/FuChenRenShen/article/details/83930511
[js] 使用js写一个批量上传文件的组件
不带插件,实现批量上传文件及进度显示 https://www.cnblogs.com/chengpanpan/p/7074794.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="./css/NewFile.css">
<script type="text/javascript" src="./js/jquery-1.9.1.min.js"></script>
</head>
<body>
<div id="test">
<input type="file" id="fileMutiply" name="files" multiple="multiple" >
</div>
<script>
/**
*
*/
var i=0;
var j=0;
$(function(){
$("#fileMutiply").change(function eventStart(){
var ss =this.files; //获取当前选择的文件对象
for(var m=0;m<ss.length;m++){ //循环添加进度条
efileName = ss[m].name ;
if (ss[m].size> 1024 * 1024){
sfileSize = (Math.round(ss[m].size /(1024 * 1024))).toString() + 'MB';
}
else{
sfileSize = (Math.round(ss[m].size/1024)).toString() + 'KB';
}
$("#test").append(
"<li id="+m+"file><div class='progress'><div id="+m+"barj class='progressbar'></div></div><span class='filename'>"+efileName+"</span><span id="+m+"pps class='progressnum'>"+(sfileSize)+"</span></li>");
}
sendAjax();
function sendAjax() {
if(j>=ss.length) //采用递归的方式循环发送ajax请求
{
$("#fileMutiply").val("");
j=0;
return;
}
var formData = new FormData();
formData.append('files', ss[j]); //将该file对象添加到formData对象中
$.ajax({
url:'fileUpLoad.action',
type:'POST',
cache: false,
data:{},//需要什么参数,自己配置
data: formData,//文件以formData形式传入
processData : false,
//必须false才会自动加上正确的Content-Type
contentType : false ,
/* beforeSend:beforeSend,//发送请求
complete:complete,//请求完成
*/ xhr: function(){ //监听用于上传显示进度
var xhr = $.ajaxSettings.xhr();
if(onprogress && xhr.upload) {
xhr.upload.addEventListener("progress" , onprogress, false);
return xhr;
}
} ,
success:function(data){
$(".filelist").find("#"+j+"file").remove();//移除进度条样式
j++; //递归条件
sendAjax();
// }
},
error:function(xhr){
alert("上传出错");
}
});
}
})
function onprogress(evt){
var loaded = evt.loaded; //已经上传大小情况
var tot = evt.total; //附件总大小
var per = Math.floor(100*loaded/tot); //已经上传的百分比
$(".filelist").find("#"+j+"pps").text(per +"%");
$(".filelist").find("#"+j+"barj").width(per+"%");
};
})
</script>
</body>
</html>
[软技能] 127.0.0.1和0.0.0.0的区别是什么?
1.回送地址127.0.0.1: 从127.0.0.1~127.255.255.255,这整个都是回环地址。localhost是本地DNS解析的127.0.0.1的域名,一般我们通过ping 127.0.0.1来测试本地网络是否正常。
2.再看看 0.0.0.0: 在路由中,当路由表中没有找到完全匹配的路由时所对应的路由。
在地址中,服务端的0.0.0.0表示本机上面的所有IPV4地址,直接ping 0.0.0.0是不行的,在IPV4中表示的是无效的目标地址。