struts-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF subversion and git services (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (WW-4532) Javascript generated by s:doubleselect has global variables that can interfer with the rest of the app
Date Tue, 04 Aug 2015 20:03:05 GMT

    [ https://issues.apache.org/jira/browse/WW-4532?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14654270#comment-14654270
] 

ASF subversion and git services commented on WW-4532:
-----------------------------------------------------

Commit 3e1087a7fa1b2ee32ce7b9fc8d8f289f2fd7d2fa in struts's branch refs/heads/master from
[~jogep]
[ https://git-wip-us.apache.org/repos/asf?p=struts.git;h=3e1087a ]

WW-4532 Javascript generated by s:doubleselect has global variables that can interfer with
the rest of the app

- Fix problem with missing var for loop variable and possible mixed scope


> 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.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)

Mime
View raw message