[ https://issues.apache.org/jira/browse/WW-4532?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Lukasz Lenart updated WW-4532: ------------------------------ Fix Version/s: 2.5.x > Javascript generated by s:doubleselect has global variables that can interfer > with the rest of the app > ------------------------------------------------------------------------------------------------------ > > Key: WW-4532 > URL: https://issues.apache.org/jira/browse/WW-4532 > Project: Struts 2 > Issue Type: Bug > Components: Plugin - Tags > Affects Versions: 2.3.20 > Reporter: Pierre Henry > Labels: javascript > Fix For: 2.5.x > > > In the JavaScript code generated by the {{s:doubleselect}} tag (and, possibly > other tags), there are for loops using the following format : > {code} > for (m = ObservationForm_observation_countryKeyTemp.options.length - 1; m >= > 0; m--) { > ObservationForm_observation_countryKeyTemp.options[m] = null; > {code} > The variable {{m}} is never defined before that. So this creates a globally > scoped {{m}} variable that can interfere with other JavaScript code. > In my case it interfered with library code that is processed with a minifyer > (I think in this case it is Google Closure Compiler) and contains a lot of > one-letter variable name, such as... {{m}}. > So I got the following error : > {code} > Uncaught TypeError: number is not a function > {code} > Which was difficult to trace since the code was minified. If the code was not > minified, then the error did not happen any more. > I believe it would be enough to just use the var keyword in the loop > definition to remove this problem : > {code} > for (var m = ObservationForm_observation_countryKeyTemp.options.length - 1; m > >= 0; m--) { > ObservationForm_observation_countryKeyTemp.options[m] = null; > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)