function add_iframe(url) {
const frame = document.createElement('iframe');
frame.src = url;
document.body.appendChild(frame);
return new Promise(resolve => {
frame.onload = e => resolve('LOADED');
});
}
const iframe_promises = [];
function add_iframe_async(url) {
if (iframe_promises[url])
throw "URL ALREADY USED";
iframe_promises[url] = add_iframe(url);
}
async function wait_iframe_async(url) {
if (!iframe_promises[url])
return "URL NOT FOUND";
const target_promise = iframe_promises[url];
iframe_promises[url] = null;
return target_promise;
}
async function open_window(url) {
const win = window.open(url, '_blank');
if (!win)
return 'FAILED';
return await new Promise(resolve => {
win.onload = e => resolve('LOADED');
});
}
function create_iframe(url) {
return new Promise(resolve => {
const frame = document.createElement('iframe');
frame.src = url;
frame.onload = () => resolve(frame);
document.body.appendChild(frame);
});
}
function create_img(url) {
return new Promise(resolve => {
const img = document.createElement('img');
img.src = url;
img.onload = () => resolve(img);
img.onerror = () => resolve(img);
document.body.appendChild(img);
});
}