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ドメイン名です。通常、127.0.0.1にpingを実行して、ローカルネットワークが正常かどうかをテストします。
2. 0.0.0.0をもう一度見てください。ルーティングで、完全に一致するルートがルーティングテーブルにない場合の対応するルート。
このアドレスで、サーバー側の0.0.0.0はマシン上のすべてのIPV4アドレスを意味します。0.0.0.0に直接pingすることはできません。IPV4では、これは無効なターゲットアドレスを意味します。