/**
|
* Helper - 帮助小功能集
|
* @author Tevin
|
*/
|
|
export class Helper {
|
|
constructor() {
|
}
|
|
/**
|
* 检查网络状态
|
* @param {Function} callback
|
*/
|
checkOnlineState(callback) {
|
// 网页模式
|
if (process.env.TARO_ENV === 'h5') {
|
// 网络已开启
|
if (navigator.onLine) {
|
// 用图片资源测试网络状态
|
const img = new Image();
|
img.onload = () => {
|
img.onload = null;
|
callback && callback(true);
|
};
|
img.onerror = () => {
|
img.onerror = null;
|
callback && callback(false);
|
};
|
img.src = 'http://gz.zhiheiot.com/disp/download/buildArchive/online.png?t=' + Date.now();
|
}
|
// 网络未开启
|
else {
|
callback && callback(false);
|
}
|
}
|
// 补充:小程序模式用 getNetworkType
|
}
|
|
/**
|
* 播放App操作的提醒语音
|
* @param {String} name
|
*/
|
playOprSound(name) {
|
const audio = new Audio('../assets/sound/' + name + '.mp3');
|
audio.play();
|
}
|
|
/**
|
* 显示调试面板(仅支持H5)
|
* @param {{cssSelector,autoOpen}} options
|
* @param {Function} [callback]
|
*/
|
showDevConsole(options = {}, callback) {
|
// 只支持 h5 编译
|
if (process.env.TARO_ENV !== 'h5') {
|
return;
|
}
|
const fileref = document.createElement('script');
|
fileref.setAttribute('type', 'text/javascript');
|
if (window.location.protocol === 'https:') {
|
fileref.setAttribute('src', 'https://cdn.jsdelivr.net/npm/eruda');
|
} else {
|
fileref.setAttribute('src', 'http://cdn.jsdelivr.net/npm/eruda');
|
}
|
document.getElementsByTagName('head')[0].appendChild(fileref);
|
const simulateTouch = (dom, type) => {
|
const button = dom;
|
const touch = new Touch({
|
identifier: Date.now(),
|
target: button,
|
clientX: 0,
|
clientY: 0,
|
screenX: 0,
|
screenY: 0,
|
pageY: 0,
|
pageX: 0,
|
radiusX: 2.5,
|
radiusY: 2.5,
|
rotationAngle: 10,
|
force: 0.5,
|
});
|
const touchstart = new TouchEvent(type, {
|
cancelable: true,
|
bubbles: true,
|
composed: true,
|
touches: [touch],
|
targetTouches: [touch],
|
changedTouches: [touch],
|
});
|
button.dispatchEvent(touchstart);
|
};
|
const erudaTimer = setInterval(() => {
|
if (window.eruda) {
|
clearInterval(erudaTimer);
|
setTimeout(() => {
|
const container = document.createElement('div');
|
if (options.cssSelector) {
|
document.querySelector(options.cssSelector).appendChild(container);
|
} else {
|
document.getElementsByTagName('body')[0].appendChild(container);
|
}
|
window.eruda.init({
|
container: container,
|
useShadowDom: false,
|
});
|
if (options.autoOpen) {
|
let button = null;
|
setTimeout(() => {
|
button = document.querySelector('.eruda-entry-btn');
|
}, 50);
|
setTimeout(() => {
|
simulateTouch(button, 'touchstart');
|
}, 60);
|
setTimeout(() => {
|
simulateTouch(button, 'touchend');
|
}, 350);
|
}
|
setTimeout(() => {
|
console.warn('=====【艾信App调试模式】=====');
|
}, 800);
|
setTimeout(() => {
|
console.warn('点击右下角悬浮工具箱图标可以折叠面板');
|
}, 900);
|
setTimeout(() => {
|
callback && callback();
|
}, 1000);
|
}, 100);
|
|
}
|
}, 100);
|
}
|
|
}
|
|
export const $helper = new Helper();
|