UNPKG

bbpro

Version:

BrowserBox - remote browser isolation tool

51 lines (49 loc) 1.72 kB
{ self.onload = () => { document .querySelector('button.run-action') .addEventListener('click', updateStatus) const target = new URL(location); target.port = parseInt(location.port) + 1; self.parent.postMessage({ack:{arrived:true}}, target.origin); self.addEventListener('message', async ({data, origin}) => { //console.log(JSON.stringify({data,origin})); const {viewport} = data; if ( origin !== target.origin ) { console.warn(`Incorrect origin`, origin); } if ( viewport ) { try { const formData = new FormData(); const token = document.querySelector('meta[name="csrf-token"]').getAttribute('content') formData.append('width', viewport.width); formData.append('height', viewport.height); formData.append('isMobile', viewport.isMobile); formData.append('hasTouch', viewport.hasTouch); //console.log({viewport}); const resp = await fetch('/viewport', { credentials: 'same-origin', headers: { 'CSRF-Token': token, }, method: 'POST', body: new URLSearchParams(formData) }) .then(resp => resp.text()) //.then(txt => console.log({txt})); self.parent.postMessage({ack:{viewport:true}}, target.origin); } catch(e) { console.error(`Issue sending viewport`); } } }); }; function updateStatus(click) { const statusEl = document.querySelector('#run_status'); statusEl.innerText = 'running'; click.target.innerText = 'Running...'; setTimeout(() => { click.target.disabled = true; }, 0); } }