1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
|
let webviewObj = null; let currentWebview = null; let webviewUrl = '/static/html/index.html'; let timer = null;
export const createWebview = (rect, cb) => { closeWebview(() => { let { width, height, left, top } = rect; let style = { width, height, left, top }; webviewObj = plus.webview.create('', 'webview', { plusrequire: 'none', ...style, }); webviewObj.loadURL(webviewUrl); webviewObj.addEventListener( 'loading', res => { console.log('webview loading', res); }, false ); webviewObj.addEventListener( 'loaded', res => { webviewObj.show(); console.log('webview loaded', res); cb && cb(true); }, false ); webviewObj.addEventListener( 'error', err => { console.log('webview error', err); cb && cb(false); }, false ); webviewObj.addEventListener( 'message', res => { console.log('接收Web端消息', res); }, false ); const pages = getCurrentPages(); const currentPage = pages[pages.length - 1]; currentWebview = currentPage.$getAppWebview(); currentWebview.append(webviewObj); setTimeout(() => { webviewObj.setStyle(style); webviewObj.checkRenderedContent( {}, res => { console.log('checkRenderedContent success', res); }, err => { console.log('checkRenderedContent error', err); cb && cb(false); } ); }, 200); }); };
export const sendMessage = details => { clearTimeout(timer); timer = setTimeout(() => { let jsCode = `setContent(${JSON.stringify(details)})`; let webview = plus.webview.getWebviewById('webview'); webview.evalJS(jsCode); }, 200); };
export const toggleWebview = (status = 'hide') => { if (status == 'show') { webviewObj && webviewObj?.show(); } else { clearTimeout(timer); webviewObj && webviewObj?.hide(); } }; export const closeWebview = cb => { clearTimeout(timer); webviewObj && webviewObj?.close(); currentWebview = null; cb && cb(); };
|