[prev in list] [next in list] [prev in thread] [next in thread]
List: struts-dev
Subject: [jira] [Created] (WW-4532) Javascript generated by s:doubleselect has global variables that can inte
From: "Pierre Henry (JIRA)" <jira () apache ! org>
Date: 2015-07-28 9:45:05
Message-ID: JIRA.12849565.1438076693000.305552.1438076705299 () Atlassian ! JIRA
[Download RAW message or body]
Pierre Henry created WW-4532:
--------------------------------
Summary: 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
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)
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic