Przeglądaj źródła

scripts now loading in order as specified

one after another so they can depend on each other
main
Felix Brendel 5 lat temu
rodzic
commit
cfa53405a6
1 zmienionych plików z 32 dodań i 51 usunięć
  1. +32
    -51
      decipher.js

+ 32
- 51
decipher.js Wyświetl plik

@@ -1,55 +1,34 @@
// function clone_script_node(node){
// // console.log("\n\n\nnew script!")
// var script = document.createElement("script");
// script.text = node.innerHTML;
// // console.log("text: " + script.text)
// var i = -1, attrs = node.attributes, attr;
// while (++i < attrs.length) {
// script.setAttribute((attr = attrs[i]).name, attr.value);
// if (attr.name === "src")
// console.log(attr.value)
// }
// return script;
// }


// function replace_all_script_nodes(node) {
// if (node.tagName === 'SCRIPT') {
// node.parentNode.replaceChild(clone_script_node(node), node);
// } else {
// var i = -1, children = node.childNodes;
// while (++i < children.length) {
// replace_all_script_nodes(children[i]);
// }
// }

// return node;
// }

function insertHTML(html){
// if no append is requested, clear the target element
// if(!append) dest.innerHTML = '';
// create a temporary container and insert provided HTML code
let container = document.createElement('div');
container.innerHTML = html;
// cache a reference to all the scripts in the container
let scripts = container.querySelectorAll('script');
// get all child elements and clone them in the target element
let nodes = container.childNodes;
// for( let i=0; i< nodes.length; i++) dest.appendChild( nodes[i].cloneNode(true) );
// force the found scripts to execute...
for( let i=0; i< scripts.length; i++){
let script = document.createElement('script');
script.type = scripts[i].type || 'text/javascript';
if( scripts[i].hasAttribute('src') ) script.src = scripts[i].src;
script.innerHTML = scripts[i].innerHTML;
document.head.appendChild(script);
document.head.removeChild(script);
function load_script(o_script, callback) {

let script = document.createElement('script');
script.type = o_script.type || 'text/javascript';

if(o_script.hasAttribute('src')) {
script.src = o_script.src;
script.onload = callback
}

script.innerHTML = o_script.innerHTML;
document.head.appendChild(script);

if(o_script.src === "") {
// NOTE(Felix): it seems the onload is not called on script nodes that
// define the js inline instead of through a src attribute, so for
// them we call the callback manually and hope for the best.
callback();
}
// done!
return true;
}

var next_script_index = 0
var deferred_scripts = []

function load_next_deferred_script() {
console.log("recurse!")
if (next_script_index >= deferred_scripts.length)
return

load_script(deferred_scripts[next_script_index++], () => load_next_deferred_script())
}

function decrypt_page() {
var key_str = ""
@@ -115,8 +94,10 @@ function decrypt_page() {
var dec_text = new TextDecoder().decode(dec_bytes)
document.body.outerHTML = "<body" + dec_text + "</body>"

// insertHTML(document.body.innerHTML)
// replace_all_script_nodes(document.getElementsByTagName("body")[0]);

deferred_scripts = document.body.querySelectorAll('script');
load_next_deferred_script()

}

window.onload = decrypt_page

Ładowanie…
Anuluj
Zapisz