* Lots of code cleanup * Cleanup parse-options tests - Rename objects for clarity and inline unneeded objects - Remove unneeded tests - Use Object.keys().length instead of a custom function - Use typeof === "object" instead of a custom function that checks the prototype tree as well, since we don't expect anything but an object literal. * Remove old switchFallback code * Remove polyfill for Function.prototype.bind * Inline small functions * Add more documentation and tests for options.currentUrlFullReload Closes #17 * Update package.json
40 lines
1011 B
JavaScript
40 lines
1011 B
JavaScript
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"
|
||
|
||
if (src !== "") {
|
||
script.src = src
|
||
script.async = false // force synchronous loading of peripheral JS
|
||
}
|
||
|
||
if (code !== "") {
|
||
try {
|
||
script.appendChild(document.createTextNode(code))
|
||
}
|
||
catch (e) {
|
||
// old IEs have funky script nodes
|
||
script.text = code
|
||
}
|
||
}
|
||
|
||
// execute
|
||
parent.appendChild(script)
|
||
// avoid pollution only in head or body tags
|
||
if (["head", "body"].indexOf(parent.tagName.toLowerCase()) > 0) {
|
||
parent.removeChild(script)
|
||
}
|
||
|
||
return true
|
||
}
|