This week I encountered an interesting issue in Tapestry when I tried to
dynamically load a component using Tapestry’s built-in EventListener
functionality. The component in question had a .script
file associated with
it, which Tapestry loaded dynamically, but the JavaScript functions in the
.script
file were “not found” when I tried to execute them.
After a bit of digging around, a colleague of mine noticed that Tapestry was
loading the .script
file using an eval()
statement instead of inserting
the script into the DOM.
In order for the JavaScript functions to be usable we had to change the script file to save anonymous functions into variable names.
Before:
function someFunctionName() {
...;
}
After:
someFunctionName = function() {
...;
}`