instance method String#evalScripts
String#evalScripts() → Array
Evaluates the content of any inline <script>
block present in the string.
Returns an array containing the value returned by each script.
<script>
blocks referencing external files will be treated as though
they were empty (the result for that position in the array will be undefined
);
external files are not loaded and processed by String#evalScripts
.
Examples
'lorem... <script>2 + 2</script>'.evalScripts();
// -> [4]
'<script>2 + 2<script><script>alert("hello world!")</script>'.evalScripts();
// -> [4, undefined] (and displays 'hello world!' in the alert dialog)
About evalScripts
, var
s, and defining functions
String#evalScripts
evaluates script blocks, but this does not mean
they are evaluated in the global scope. They aren't, they're evaluated in
the scope of the String#evalScripts
method. This has important
ramifications for your scripts:
- Anything in your script declared with the
var
keyword will be discarded momentarily after evaluation, and will be invisible to any other scope. - If any
<script>
blocks define functions, they will need to be assigned to properties of thewindow
object.
For example, this won't work:
// This kind of script won't work if processed by evalScripts:
function coolFunc() {
// Amazing stuff!
}
Instead, use the following syntax:
// This kind of script WILL work if processed by evalScripts:
window.coolFunc = function() {
// Amazing stuff!
}
(You can leave off the window.
part of that, but it's bad form.)
Evaluates the content of any script
block present in the string. Returns
an array containing the value returned by each script.