Add replaceScriptNodes function
This commit is contained in:
parent
7c392f071d
commit
1673579d32
1 changed files with 32 additions and 0 deletions
32
mithril.js
32
mithril.js
|
|
@ -1176,9 +1176,41 @@
|
||||||
$document.createRange().createContextualFragment(data))
|
$document.createRange().createContextualFragment(data))
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
parentElement.insertAdjacentHTML("beforeend", data)
|
parentElement.insertAdjacentHTML("beforeend", data)
|
||||||
|
replaceScriptNodes(parentElement)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Replace script tags inside given DOM element with executable ones.
|
||||||
|
// Will also check children recursively and replace any found script
|
||||||
|
// tags in same manner.
|
||||||
|
function replaceScriptNodes(node) {
|
||||||
|
if (node.tagName === "SCRIPT") {
|
||||||
|
node.parentNode.replaceChild(buildExecutableNode(node), node)
|
||||||
|
} else {
|
||||||
|
var children = node.childNodes
|
||||||
|
if (children && children.length) {
|
||||||
|
for (var i = 0; i < children.length; i++) {
|
||||||
|
replaceScriptNodes(children[i])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return node
|
||||||
|
}
|
||||||
|
|
||||||
|
// Replace script element with one whose contents are executable.
|
||||||
|
function buildExecutableNode(node){
|
||||||
|
var scriptEl = document.createElement("script")
|
||||||
|
var attrs = node.attributes
|
||||||
|
|
||||||
|
for (var i = 0; i < attrs.length; i++) {
|
||||||
|
scriptEl.setAttribute(attrs[i].name, attrs[i].value)
|
||||||
|
}
|
||||||
|
|
||||||
|
scriptEl.text = node.innerHTML
|
||||||
|
return scriptEl
|
||||||
|
}
|
||||||
|
|
||||||
function injectHTML(parentElement, index, data) {
|
function injectHTML(parentElement, index, data) {
|
||||||
var nextSibling = parentElement.childNodes[index]
|
var nextSibling = parentElement.childNodes[index]
|
||||||
if (nextSibling) {
|
if (nextSibling) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue