mirror of https://github.com/dirtbags/moth.git
A simpler and better way to munge relative URLs
This commit is contained in:
parent
6a9182ac9c
commit
2f2fd51607
|
@ -20,7 +20,6 @@ function init() {
|
||||||
.then(function(resp) {
|
.then(function(resp) {
|
||||||
return resp.json();
|
return resp.json();
|
||||||
}).then(function(obj) {
|
}).then(function(obj) {
|
||||||
document.getElementById("puzzle").innerHTML = obj.body;
|
|
||||||
document.getElementById("authors").textContent = obj.authors.join(", ");
|
document.getElementById("authors").textContent = obj.authors.join(", ");
|
||||||
if (obj.answers) {
|
if (obj.answers) {
|
||||||
devel_addin(obj, document.getElementById("devel"));
|
devel_addin(obj, document.getElementById("devel"));
|
||||||
|
@ -39,6 +38,16 @@ function init() {
|
||||||
li.appendChild(a);
|
li.appendChild(a);
|
||||||
document.getElementById("files").appendChild(li);
|
document.getElementById("files").appendChild(li);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Prefix `base` to relative URLs in the puzzle body
|
||||||
|
let doc = new DOMParser().parseFromString(obj.body, "text/html");
|
||||||
|
for (let se of doc.querySelectorAll("[src,href]")) {
|
||||||
|
se.outerHTML = se.outerHTML.replace(/(src|href)="([^/]+)"/i, "$1=\"" + base + "$2\"");
|
||||||
|
}
|
||||||
|
|
||||||
|
let puzzle = document.getElementById("puzzle");
|
||||||
|
while (puzzle.firstChild) puzzle.firstChild.remove();
|
||||||
|
for (let e of doc.body.childNodes) puzzle.appendChild(e);
|
||||||
}).catch(function(err) {
|
}).catch(function(err) {
|
||||||
console.log("Error", err);
|
console.log("Error", err);
|
||||||
});
|
});
|
||||||
|
@ -47,33 +56,6 @@ function init() {
|
||||||
document.querySelector("input[name=cat]").value = categoryName;
|
document.querySelector("input[name=cat]").value = categoryName;
|
||||||
document.querySelector("input[name=points]").value = points;
|
document.querySelector("input[name=points]").value = points;
|
||||||
|
|
||||||
function mutated(mutationsList, observer) {
|
|
||||||
for (let mutation of mutationsList) {
|
|
||||||
if (mutation.type == 'childList') {
|
|
||||||
for (let e of mutation.addedNodes) {
|
|
||||||
//console.log(e);
|
|
||||||
if (! e.querySelectorAll) { continue; }
|
|
||||||
for (let se of e.querySelectorAll("[src],[href]")) {
|
|
||||||
se.outerHTML = se.outerHTML.replace(/(src|href)="([^/]+)"/i, "$1=\"" + base + "$2\"")
|
|
||||||
//console.log(se.outerHTML);
|
|
||||||
}
|
|
||||||
//console.log(e.querySelectorAll("[src]"));
|
|
||||||
}
|
|
||||||
//console.log(mutation.addedNodes);
|
|
||||||
} else {
|
|
||||||
console.log(mutation);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let puzzle = document.getElementById("puzzle");
|
|
||||||
let observerOptions = {
|
|
||||||
childList: true,
|
|
||||||
attributes: true,
|
|
||||||
subtree: true,
|
|
||||||
};
|
|
||||||
window.observer = new MutationObserver(mutated);
|
|
||||||
observer.observe(puzzle, observerOptions);
|
|
||||||
}
|
}
|
||||||
document.addEventListener("DOMContentLoaded", init);
|
document.addEventListener("DOMContentLoaded", init);
|
||||||
</script>
|
</script>
|
||||||
|
|
Loading…
Reference in New Issue