Test evalScript
This commit is contained in:
29
src/scripts/lib/eval-script.js
Normal file
29
src/scripts/lib/eval-script.js
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
module.exports = function(el) {
|
||||||
|
// console.log("going to execute script", el)
|
||||||
|
|
||||||
|
var code = (el.text || el.textContent || el.innerHTML || "")
|
||||||
|
var head = 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"
|
||||||
|
try {
|
||||||
|
script.appendChild(document.createTextNode(code))
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
// old IEs have funky script nodes
|
||||||
|
script.text = code
|
||||||
|
}
|
||||||
|
|
||||||
|
// execute
|
||||||
|
head.insertBefore(script, head.firstChild)
|
||||||
|
head.removeChild(script) // avoid pollution
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
22
tests/scripts/lib/eval-scripts.js
Normal file
22
tests/scripts/lib/eval-scripts.js
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
var tape = require("tape")
|
||||||
|
|
||||||
|
var evalScript = require("../../../src/scripts/lib/eval-script")
|
||||||
|
|
||||||
|
tape("test evalScript method", function(t) {
|
||||||
|
document.body.className = ""
|
||||||
|
|
||||||
|
var script = document.createElement("script")
|
||||||
|
script.innerHTML = "document.body.className = 'executed'"
|
||||||
|
|
||||||
|
t.equal(document.body.className, "", "script hasn't been executed yet")
|
||||||
|
|
||||||
|
evalScript(script)
|
||||||
|
t.equal(document.body.className, "executed", "script has been properly executed")
|
||||||
|
|
||||||
|
// script.innerHTML = "document.write('failure')"
|
||||||
|
// var bodyText = document.body.text
|
||||||
|
// evalScript(script)
|
||||||
|
// t.equal(document.body.text, bodyText, "document.write hasn't been executed")
|
||||||
|
|
||||||
|
t.end()
|
||||||
|
})
|
||||||
Reference in New Issue
Block a user