43 lines
1.2 KiB
JavaScript
43 lines
1.2 KiB
JavaScript
|
|
if( typeof emulator != 'undefined' ){
|
|
// inside worker-thread
|
|
|
|
this.listenIndexHTML = () => {
|
|
const file = "dev/browser/html"
|
|
emulator.readFromPipe( file, async (data) => {
|
|
const buf = await emulator.read_file( file )
|
|
const decoder = new TextDecoder('utf-8');
|
|
const html = decoder.decode(buf).replace(/^#!\/bin\/html/,'') // remove leftover shebangs if any
|
|
try{
|
|
this.postMessage({event:'runHTML',data:[html]})
|
|
}catch(e){
|
|
console.error(file)
|
|
console.error(e)
|
|
}
|
|
})
|
|
}
|
|
|
|
|
|
}else{
|
|
// inside browser-thread
|
|
|
|
ISOTerminal.addEventListener('emulator-started', function(){
|
|
this.addEventListener('ready', async () => {
|
|
this.worker.listenIndexHTML()
|
|
})
|
|
})
|
|
|
|
ISOTerminal.prototype.runHTML = function(html){
|
|
let $scene = document.querySelector("a-scene")
|
|
let $root = document.querySelector("a-entity#root")
|
|
if( !$root ){
|
|
$root = document.createElement("a-entity")
|
|
$root.id = "root"
|
|
$scene.appendChild($root)
|
|
}
|
|
console.log(html)
|
|
$root.innerHTML = html
|
|
}
|
|
|
|
}
|