[
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: (was: 2.5.x)
2.5
> 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
> Assignee: Johannes Geppert
> Labels: javascript
> Fix For: 2.5
>
>
> 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)