一些简单而又实用的底层功能函数收集。陆续更新中。
// 共享onload 可以多个函数绑定 防止覆盖 随时可以添加任意多个
function addLoadEvent(fn){
let oldonload = window.onload;
if (typeof window.onload != 'function'){
window.onload = fn;
}else{
window.onload = function(){
oldonload();
fn();
}
}
}
// 在现有元素之后插入一个元素 DOM本身没有提供 所以手写一个
function insertAfter(newElement,targetElement){
let parent = targetElement.parentNode;
if(parent.lastChild === targetElement){
parent.appendChild(newElement);
}else{
parent.insertBefore(newElement,targetElement.nextSibling);
}
}
// 异步数据请求ajax使用XMLHttpRequest的兼容写法
function getHTTPObject(){
if(typeof XMLHttpRequest == 'undefined'){
XMLHttpRequest = function(){
try {
return new ActiveXObject("Msxml2.XMLHTTP.6.0");
} catch (error) {};
try {
return new ActiveXObject("Msxml2.XMLHTTP.3.0");
} catch (error) {};
try {
return new ActiveXObject("Msxml2.XMLHTTP");
} catch (error) {};
return false;
}
}
return new XMLHttpRequest();
}
// 上面函数的使用,实际中也可以打包成一个方法,当然也可以直接使用axios
// 编写ajax函数获取接口数据
let request = getHTTPObject();
if(request){
request.open('GET','jsapi.php',true);
request.onreadystatechange = function(){
if(request.readyState === 4){
let res = request.responseText;
// 对返回数据进行处理
}
};
request.send(null);
}else{
alert('你的终端不支持XMLHttpRequest')
}
// 日期时间格式化方法,写入日期对象的原型,在vue中,放入main.js
Date.prototype.format = function(fmt) {
var o = {
"M+" : this.getMonth()+1,
"d+" : this.getDate(),
"h+" : this.getHours(),
"m+" : this.getMinutes(),
"s+" : this.getSeconds(),
"q+" : Math.floor((this.getMonth()+3)/3),
"S" : this.getMilliseconds()
};
if(/(y+)/.test(fmt)) {
fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
}
for(var k in o) {
if(new RegExp("("+ k +")").test(fmt)){
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
}
}
return fmt;
};
// 使用方法如下
let fmt = new Date().format("yyyy-MM-dd hh:mm:ss");
// 简易日期格式化方法如下:
fmtd(){
var date = new Date();
var Y = date.getFullYear() + "-";
var M = (date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1) + "-";
var D = date.getDate();
return Y + M + D ;
},