module.exports = function(el) { var code = (el.text || el.textContent || el.innerHTML || "") var src = (el.src || "") var parent = el.parentNode || document.querySelector("head") || document.documentElement var script = document.createElement("script") if (code.match("document.write")) { if (console && console.log) { console.log("Script contains document.write. Can’t be executed correctly. Code skipped ", el) } return false } script.type = "text/javascript" script.id = el.id; /* istanbul ignore if */ if (src !== "") { script.src = src script.async = false // force synchronous loading of peripheral JS } if (code !== "") { try { script.appendChild(document.createTextNode(code)) } catch (e) { /* istanbul ignore next */ // old IEs have funky script nodes script.text = code } } // execute parent.appendChild(script) // avoid pollution only in head or body tags if ((parent instanceof HTMLHeadElement || parent instanceof HTMLBodyElement) && parent.contains(script)) { parent.removeChild(script) } return true }