/** * 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();