From fa27e0560674dd700f513bc6ddcb5c329300fb96 Mon Sep 17 00:00:00 2001 From: Maxime Thirouin Date: Sun, 4 May 2014 08:44:52 +0200 Subject: [PATCH] Test executeScripts --- src/scripts/lib/execute-scripts.js | 15 +++++++++++++++ tests/scripts/lib/execute-scripts.js | 16 ++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 src/scripts/lib/execute-scripts.js create mode 100644 tests/scripts/lib/execute-scripts.js diff --git a/src/scripts/lib/execute-scripts.js b/src/scripts/lib/execute-scripts.js new file mode 100644 index 0000000..d6392b9 --- /dev/null +++ b/src/scripts/lib/execute-scripts.js @@ -0,0 +1,15 @@ +var forEachEls = require("./foreach-els") +var evalScript = require("./eval-script") +// Finds and executes scripts (used for newly added elements) +// Needed since innerHTML does not run scripts +module.exports = function(el) { + // console.log("going to execute scripts for ", el) + forEachEls(el.querySelectorAll("script"), function(script) { + if (!script.type || script.type.toLowerCase() === "text/javascript") { + if (script.parentNode) { + script.parentNode.removeChild(script) + } + evalScript(script) + } + }) +} diff --git a/tests/scripts/lib/execute-scripts.js b/tests/scripts/lib/execute-scripts.js new file mode 100644 index 0000000..fb4a421 --- /dev/null +++ b/tests/scripts/lib/execute-scripts.js @@ -0,0 +1,16 @@ +var tape = require("tape") + +var executeScripts = require("../../../src/scripts/lib/execute-scripts") + +tape("test executeScripts method", function(t) { + document.body.className = "" + + var container = document.createElement("div") + container.innerHTML = "<" + "script" + ">document.body.className = 'executed';<" + "script" + ">document.body.className += ' correctly';" + + t.equal(document.body.className, "", "script hasn't been executed yet") + executeScripts(container) + t.equal(document.body.className, "executed correctly", "script has been properly executed") + + t.end() +})