111 lines
3.6 KiB
HTML
111 lines
3.6 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta content="width=device-width,initial-scale=1.0" name="viewport">
|
|
</head>
|
|
<script>
|
|
|
|
function sleepit(ms) {
|
|
return new Promise((resolve) => {
|
|
setTimeout(() => {
|
|
resolve(1);
|
|
}, ms);
|
|
});
|
|
}
|
|
function divMessage(html){
|
|
var div = document.createElement('div');
|
|
div.innerHTML=html;
|
|
document.body.appendChild(div);
|
|
div.scrollIntoView({ behavior: 'smooth'});
|
|
}
|
|
|
|
(async function webviewprogram(){
|
|
var port;
|
|
var resolves = [];
|
|
function setupMessage(){
|
|
return new Promise((resolve) => {
|
|
window.addEventListener('message',(e)=>{
|
|
if(e.data=="init-from-java" && ! port){
|
|
divMessage('INIT');
|
|
port = e.ports[0];
|
|
port.onmessage = function (ee) {
|
|
divMessage('AAport.onmessage='+ee.data);
|
|
var response = JSON.parse(ee.data);
|
|
divMessage('response.resolveIndex'+response.resolveIndex);//AAport.onmessage='+ee.data);
|
|
var localresolve = resolves[response.resolveIndex];
|
|
divMessage(typeof localresolve)
|
|
|
|
localresolve(response);
|
|
}
|
|
resolve()
|
|
}
|
|
divMessage('message='+e.data);
|
|
},true);
|
|
});
|
|
}
|
|
function doLs(path){
|
|
divMessage('doLs');
|
|
return new Promise((resolve) => {
|
|
divMessage('resolves.length'+resolves.length);
|
|
resolves.push(resolve);
|
|
divMessage('after push resolves.length'+resolves.length);
|
|
port.postMessage('{"function":"ls","path":"'+path+'","resolveIndex":"'+(resolves.length-1)+'"}');
|
|
});
|
|
}
|
|
function doCat(file){
|
|
return new Promise((resolve) => {
|
|
resolves.push(resolve);
|
|
port.postMessage('{"function":"cat","resolveIndex":"'+resolves.length+'"}');
|
|
});
|
|
}
|
|
window.addEventListener('load',()=>{
|
|
divMessage('JAVASCRIPT WORKS');
|
|
},false);
|
|
// await sleepit(2000);
|
|
// divMessage('awaited 2000');
|
|
// await sleepit(2000);
|
|
// divMessage('awaited again 2000');
|
|
await setupMessage();
|
|
divMessage('setup');
|
|
async function mapDoLs(path){
|
|
var reply = await doLs(path);
|
|
divMessage("reply.result.length"+reply.result.length);
|
|
reply.result.forEach((file)=>{
|
|
divMessage(file.name);//reply.result.length"+reply.result.length);
|
|
//var button
|
|
button = document.createElement("button");
|
|
button.addEventListener("click",()=>{
|
|
if(file.isDirectory)
|
|
mapDoLs(path+"/"+file.name);
|
|
},false);
|
|
//if(file.isDirectory){
|
|
//{
|
|
// button = document.createElement("button");
|
|
// button.addEventListener("click",()=>{
|
|
// mapDoLs(path+"/"+file.name);
|
|
// },false);
|
|
//} else {
|
|
// button = document.createElement("div");
|
|
//}
|
|
////a.href="#";
|
|
//////a.textContent="asdasdada"
|
|
button.textContent=file.name+ " " + file.size;
|
|
document.body.appendChild(button);
|
|
});
|
|
}
|
|
await mapDoLs("/DCIM");
|
|
divMessage("done");
|
|
// for(let file of DCIM.result){
|
|
// divMessage("filename");
|
|
|
|
//});
|
|
})();
|
|
</script>
|
|
<a href='https://html5test.co/'>https://html5test.co/</a>
|
|
<h1> this is html <h1>
|
|
<h2> this is a h2</h2>
|
|
<input type=text />
|
|
<img src='https://wald.alexmahr.de/images/bear.avif'>
|
|
<img src='https://wald.alexmahr.de/images/delphin.avif'>
|
|
</html>
|