h5替換 alert toast ajax 請求 獨立函式封裝 複製可用
h5替換 alert toast ajax 請求 獨立函式封裝 複製可用
不想用框架的朋友可以用 精簡到極致
//替換系統的 資訊框提示
function msgShow(o){
if(typeof o === "string") o={msg:o};
var divc = document.createElement("div");
divc.innerHTML = o.title;o.title = divc.innerHTML;
divc.innerHTML = o.msg;o.msg = divc.innerHTML;
var arr = 'msg,title'.split(',');
for (var k in arr) if( o[arr[k]] == "undefined")o[arr[k]]='';
if(typeof o.fun !== "function")o.fun=function(){};
var html_doc = `<div class="end_overflow" style="position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 999999;
background-color: rgba(0,0,0,0.5);
overscroll-behavior: none;
text-align: center;
font-size: 16px;
overflow-y: auto;
">
<div class="end_overflow" style="
position: absolute;
width: calc(100vw);
top:0;
left: 0;
height: calc(100vh + 1px);
z-index: -1;"></div>
<div style="
max-width: 300px;
min-width: 150px;
width: 50%;
border-radius: 10px;
background-color: #FFF;
/* padding: 10px 0; */
margin: 0 auto;
margin-top: 30%;
">
<div style="padding: 10px 10px 0px 10px;width: 100%;font-size: 1.3rem; font-weight: 200;"><span >${o.title}</span></div>
<div style="padding: 10px 10px 10px 10px;width: 100%;"><span >${o.msg}</span></div>
<div style="width: 100%;height: 1px; background-color: rgba(0,0,0,0.2);margin: 10px 0 0 0;"></div>
<div style="color: dodgerblue; font-size: 1.3rem; padding: 10px 10px;width: 100%;pointer-events: auto;" onclick=";var aac=this.parentNode.parentNode.fun; this.parentNode.parentNode.parentNode.removeChild(this.parentNode.parentNode);aac();"><span>ok</span></div>
</div>
</div>`;
console.log(html_doc)
divc.innerHTML = html_doc;
divc.firstChild.fun=o.fun;
document.body.appendChild(divc.firstChild)
};
//模仿安卓的 toast
function toastShow(o) {
if(typeof o === "string") o={'msg':o};
var divc = document.createElement("div");
if(typeof o.time == "undefined") o.time =3000;//消失時間 毫秒
if(typeof o.s == "undefined") o.s =0.5;//過度動畫 時間秒
var arr = 'msg'.split(',');
for (var k in arr){
if( typeof o[arr[k]] == "undefined"){
o[arr[k]] ='';
}else{
divc.innerHTML = o[arr[k]];
o[arr[k]] = divc.innerHTML;
}
}
if(typeof o.fun !== "function")o.fun=function(){};
var html_doc = `<div class="end_overflow" style="position: fixed;
top:70%;
left: 0;
z-index: 999999999;
text-align: center;
font-size: 16px;
width: 100%;
color: #fff;
opacity:0;
transition: opacity ${o.s}s;
">
<div style="
margin: 0 auto;
background-color: rgba(0,0,0,0.75);
width: 50%;
border-radius: 5px;
padding: 8px;
">
${o.msg}
</div>
</div>
`;
divc.innerHTML = html_doc;
divc.firstChild.fun=o.fun;
divc = document.body.appendChild(divc.firstChild);
console.log(divc);
setTimeout(function (){
divc.style.opacity=1;
}, 2);
setTimeout(function () {
setTimeout(function (){
document.body.removeChild(divc);
},o.s*1000);
divc.style.opacity=0;
}, o.time-(o.s*1000));
}
document.querySelector("form").onsubmit=function () {
var data = new FormData(this);
var url = this.getAttribute('action');
//GET請求
ajax(url,function (data) {
msgShow(data);
})
//POST請求例子
ajax({
'url':url,
'type':'POST',
'data':data,//data-form 格式提交 JSON自己轉換一下
},function (data) {
msgShow(data);
})
}
function ajax(o,fun) {
if(typeof o === "string") o={'url':o};
if(typeof o.fun !== "undefined") fun=o.fun;
if(typeof fun == "undefined") o.fun=function(){};
if(typeof o.type == "undefined") o.type="GET";
if(typeof o.data == "undefined") o.data="";
if(typeof o.url == "undefined") o.url="";
var s=new XMLHttpRequest();
s.onreadystatechange=function () {
if(s.readyState === XMLHttpRequest.DONE) {
fun(s.responseText)
if (s.status !== 200) {
// 錯誤處理
//msgShow(lg[lg_code]+' : 500');
return;
}
}
};
s.open(o.type,o.url,true);
s.send(o.data);
}
相關文章
- 封裝ajax、axios請求封裝iOS
- 基於jq封裝ajax請求封裝
- 封裝springmvc處理ajax請求結果封裝SpringMVC
- 用原生js封裝一個ajax請求方法JS封裝
- js ajax請求封裝及解決node請求跨域問題JS封裝跨域
- js封裝 Ajax ——常用工具函式JS封裝函式
- 封裝axios請求封裝iOS
- ajax請求
- 重複的ajax請求讓人很受傷
- 技術分享:如何避免ajax重複請求?
- PostgreSQL 查詢替換函式SQL函式
- axios 請求資料封裝iOS封裝
- OC:封裝網路請求封裝
- ajax請求 juery
- 資料共享(淺複製)與資料獨立(深複製)
- ajax 封裝封裝
- 基於 Fetch 的請求封裝封裝
- 釘釘小程式 請求封裝封裝
- go對get、post請求封裝Go封裝
- 小程式-網路請求封裝封裝
- react中請求介面的封裝React封裝
- Flutter 網路請求 Dio 封裝Flutter封裝
- 十. Axios網路請求封裝iOS封裝
- vue中axios請求的封裝VueiOS封裝
- fetch資料請求的封裝封裝
- Flutter 網路請求框架封裝Flutter框架封裝
- 原生ajax請求&JSONPJSON
- php用curl封裝一個http請求類(鏈式呼叫)PHP封裝HTTP
- SQL中的替換函式replace()使用SQL函式
- 前端常用函式封裝前端函式封裝
- JSONP 通用函式封裝JSON函式封裝
- 複製瀏覽器請求到Postman瀏覽器Postman
- urllib.request.Request物件封裝請求物件封裝
- 封裝 Laravel 自定義表單請求封裝Laravel
- iris 系列文章 封裝 請求日誌封裝
- 命令模式-將請求封裝成物件模式封裝物件
- 微信小程式 request請求封裝微信小程式封裝
- jquery ajax 回撥函式的值alert出來[object Object] 解決方法jQuery函式Object